[JAVA] [Für Neulinge] Einführung von JUnit

Ich wollte JUnit schon immer für die Ausbildung von Neulingen vorstellen, aber dies ist ein enttäuschender Artikel, den ich aufgegeben habe, weil er beim Schreiben eines Entwurfs ein wenig umfangreicher wurde. Es ist eine Verschwendung, es so wegzuwerfen, wie es ist, also ist das Unternehmen auch in den Sommerferien und für Neuankömmlinge.


Was ist JUnit?

JUnit ist ein Tool, das häufig für Unit-Tests verwendet wird. JUnit ist eine Software, mit der Sie die Methode jederzeit ausführen können, indem Sie eine Klasse mit einer Methode erstellen, die beschreibt, wie sie verwendet und überprüft wird. Schreiben Sie beim Ausführen von JUnit Klassen und Methoden gemäß dem JUnit-Stil.

JUnit Flow

Flow of JUnit (Einführung)

Der Grundfluss von JUnit ist

Wird sein.

JUnit Flow (einfache Probe)

Angenommen, Sie haben eine Warenkorbklasse ("Warenkorb"). Angenommen, Sie haben eine Methode namens "getSum ()", die den Gesamtpreis ermittelt, der den Preis und die Menge aller Artikel in Ihrem Warenkorb widerspiegelt. Die Verwendung ist wie folgt.

Cart cart = new Cart();
cart.add(Produkt,Menge);

int result = cart.getSum(); //Sie können den aktuellen Gesamtbetrag im Warenkorb abrufen
assertEquals(Betrag, der hätte sein sollen, result); //Überprüfen Sie, ob der erworbene Betrag dem erwarteten Betrag entspricht

** assertEquals ist Teil der Validierung. ** ** ** ** Wenn die Argumente hier unterschiedlich sind, endet der Testprozess dort. ** ** ** ** Der Test wird ebenfalls "fehlgeschlagen". Wenn Sie assertEquals bestehen und bis zum Ende gehen, ist der Test erfolgreich. ** ** **

Sie können mehr als ein assertEquals schreiben. Wenn Sie beispielsweise mehrere Parameter im Konstruktortest festlegen und prüfen möchten, ob sie richtig eingestellt sind, sieht dies wie folgt aus.

Product apple = new Product("Apfel", 400); // appleという変数にApfelという商品名と400円を設定している

assertEquals("Apfel", apple.getName());  //Überprüfen Sie, ob der Name richtig eingestellt wurde
assertEquals(400, apple.getPrice()); //Überprüfen Sie, ob der Preis richtig eingestellt wurde

Es ist wie es ist. Der Test ist erfolgreich, wenn Sie die beiden "assertEquals" bestehen.

Testen mit JUnit

Zu testende Klasse

Die folgenden ** Klassen sind die zu testenden Klassen **.

Product.java


public class Product {
    private String productId; //Artikelnummer
    private String productName; //Produktname
    private Integer price; //Preis

    // getter
    public String getProductId() { return productId; }
    public String getProductName() { return productName; }
    public Integer getPrice() { return price; }
    
    //Konstrukteur
    public Product(String Artikelnummer,Zeichenfolge Produktname,Ganzzahliger Preis) { /*Legen Sie die obigen Eigenschaften fest*/ }

}

Cart.Java


public class Cart {
  //Eigentum
  private List<Product> list; //Produkte enthalten und ihre Anzahl

  //Methode
  /** 
   *Führen Sie den Vorgang zum Hinzufügen eines Produkts durch
   */
  public void add(Produkt Produkt) { /*Abkürzung*/ }

  /**
   *Verarbeitung zur Rücksendung der enthaltenen Produkte und deren Menge
   */
  public List<Product> getList() { /*Abkürzung*/ }
  /**
   *Verarbeitung zur Rückgabe der Gesamtsumme der enthaltenen Produkte
   */
  public int getSum() { /*Abkürzung*/ }
}
Übrigens ist das ganze Bild wie folgt.

Product.java


public class Product {
	private String productId; //Artikelnummer
	private String productName; //Produktname
	private Integer price; //Preis

	public Product(String productId, String productName, Integer price) {
		this.productId = productId;
		this.productName = productName;
		this.price = price;
	}

	public String getProductId() {
		return productId;
	}

	public String getProductName() {
		return productName;
	}

	public Integer getPrice() {
		return price;
	}
}

Cart.java


import java.util.List;
import java.util.ArrayList;

public class Cart {
	//Eigentum
	private List<Product> list; //Produkte enthalten und ihre Anzahl

	public Cart() {
		this.list = new ArrayList<Product>();
	}
	//Methode
	/**
	*Führen Sie den Vorgang zum Hinzufügen eines Produkts durch
	*/
	public void add(Product product) {
		this.list.add(product);
	}

	/**
	 *Verarbeitung zur Rücksendung der enthaltenen Produkte und deren Menge
	 */
	public List<Product> getList() {
		return this.list;
	}
	/**
	 *Verarbeitung zur Rückgabe der Gesamtsumme der enthaltenen Produkte
	 */
	public int getSum() {
		int sum = 0;
		for (Product p: this.list) {
			sum += p.getPrice();
		}
		return sum;
	}
}

Testmethode (Übersicht)

Hier möchte ich testen hinzufügen. In diesem Fall dachte ich über den folgenden Ablauf nach

Wie benutzt man 0. Erstellen Sie ein Produkt, das Sie dem Warenkorb hinzufügen möchten

  1. Erstellen Sie einen Warenkorb
  2. Artikel in den Warenkorb legen

Um zu überprüfen, ob das Hinzufügen mit der obigen Verwendung korrekt ist, habe ich Folgendes gedacht (** Hinweis: Dies ist ein Beispiel. Es ist nicht immer erforderlich, den folgenden Test mit einem ähnlichen Test durchzuführen **). 0. Entfernen Sie die Liste aus dem Warenkorb (dies ist ein vorbereitender Schritt und führt nicht zum Test)

  1. Überprüfen Sie, ob die Anzahl der Artikel im Warenkorb mit der hinzugefügten Anzahl übereinstimmt
  2. Überprüfen Sie in der Reihenfolge, ob die Artikel im Warenkorb korrekt sind

Testmethode (Pseudocode)

Der obige Testcode würde so aussehen

// 0.Erstellen Sie ein Produkt, das Sie dem Warenkorb hinzufügen möchten
Product apple = new Product("A001", "Apfel", 158);
Product orange = new Product("A002", "Orange", 258);

// 1.Erstellen Sie einen Warenkorb
Cart cart = new Cart();
//Artikel im Warenkorb(Apfel und Orange)Hinzufügen
cart.add(apple);
cart.add(orange);

//Überprüfen Sie von hier aus
// 0.Entfernen Sie die Liste aus dem Warenkorb
List<Product> list = cart.getList(); //Holen Sie sich die Liste in den Warenkorb

// 1.Die Anzahl der Artikel in der Liste, die dem Warenkorb hinzugefügt wurden(2 Stücke)Überprüfen Sie, ob es dasselbe ist wie
assertEquals(2, list.size());

// 2.Überprüfen Sie in der Reihenfolge, ob die Artikel im Warenkorb korrekt sind
Product item;
// 2.1 Überprüfen Sie, ob das erste Produkt mit dem von Apple definierten übereinstimmt
item= list.get(0);  //Nehmen Sie den ersten Artikel in den Warenkorb
assertEquals("A001", item.getProductId()); //Überprüfung der Produkt-ID des extrahierten Produkts
assertEquals("Apfel", item.getProductName()); //Überprüfung des Produktnamens des extrahierten Produkts
assertEquals((Integer)158, item.getPrice()); //Überprüfung des Produktnamens des extrahierten Produkts

// 2.1 Überprüfen Sie, ob das zweite Produkt mit dem in Orange definierten übereinstimmt
item = list.get(1); //Nehmen Sie den zweiten Artikel in den Warenkorb und beginnen Sie mit der Überprüfung
assertEquals("A002", item.getProductId()); //Überprüfung der Produkt-ID des extrahierten Produkts
assertEquals("Orange", item.getProductName()); //Überprüfung des Produktnamens des extrahierten Produkts
assertEquals((Integer)258, item.getPrice()); //Überprüfung des Produktnamens des extrahierten Produkts

Übrigens kann der mit "A001" usw. geschriebene Teil als "apple.getProductName ()" verwendet werden.

Testmethode (Pseudocode-Ergänzung)

Wie ich am Anfang schrieb, ist der Fluss von JUnit

Ist das Grundlegende. Die Validierung wird mit einer Methode validiert, die mit "assert" beginnt, z. B. "assertEquals". Und ** assertEquals schlägt fehl **, wenn beide Argumente nicht identisch sind und keine weitere Verarbeitung erfolgt **.

Zum Beispiel assertEquals (" apple ", item.getProductName ()); Wenn "Apfel" zu "Apfel" wird, ist dies ein Fehler, und danach assertEquals((Integer)158, item.getPrice()); Usw. wird nicht implementiert.

Und wenn alle Assert Equals bestanden sind und der Prozess bis zum Ende fortschreitet, wird es ein Erfolg.

Schreiben Sie außerdem * assertXXX (erwarten, tatsächlich) in der Reihenfolge des korrekten Werts und Testwerts *.

So testen Sie mit JUnit (Eclipse)

Obwohl es für Eclipse bearbeitet wurde, ist das Original pleiades. Übrigens war ich allein damit erschöpft ... Wenn Sie die Energie haben, werde ich eines Tages VS-Code usw. hinzufügen. Gehen Sie beim Ausführen von JUnit in Eclipse wie folgt vor:

Wenn sich unter dem Projektordner kein Testordner befindet, erstellen Sie ihn.

Wählen Sie Menü Datei → Neu → Quellordner.

「ファイル」メニュー→「新規」→「ソースフォルダー」を選択します

Geben Sie im nächsten Bildschirm unter "Ordnername:" "test" ein und klicken Sie auf "Fertig stellen".

表示される画面の「フォルダー名:」に「test」と入力し「完了」をクリックします

Klicken Sie mit der rechten Maustaste auf den Testordner, den Sie gerade überprüft oder erstellt haben, und wählen Sie Neu> Andere.

testフォルダを右クリックし、「新規」→「その他」を選択

Ein neuer Bildschirm wird angezeigt. Wählen Sie "Java" -> "JUnit" -> "JUnit Test Case" und dann "Next". Alternativ können Sie "junit" in das Assistentenfeld oben auf dem neuen Bildschirm eingeben. Wählen Sie "JUnit Test Case" aus den verbleibenden und dann "Next".

ウィザード画面が表示されますので「junit」と入力。JUnit テスト・ケースを選択する

Der nächste hängt von JUnit 3, 4 oder 5 ab. Verwenden Sie 4 oder 5, wenn Sie keine Bedenken hinsichtlich der Ausbildung von Neulingen haben. Wählen Sie 3, wenn Sie sich in einer enttäuschenden Situation befinden, in der Sie 3 zugewiesen sind. Leider werden 5 in 4 enthalten sein. Ich hatte nicht genug Zeit ...

Erstellen Sie einen JUnit 3-Testfall

Erstellen Sie einen JUnit3-Testfall
  1. Wählen Sie New JUnit 3 Test
  2. Geben Sie den Namen der Klasse ein, um den Testfall in Name (rote Linie) zu schreiben. "Test Ziel Test" scheint gut zu sein.
  3. Geben Sie für den Paketnamen (blaue Linie) dasselbe Paket wie das Ziel der Testklasse an (der Teil "package XXX;", der zu Beginn des zu testenden Java-Programms geschrieben wurde).
  4. Klicken Sie auf Fertig stellen.
パッケージ名と名前を書くクラスの名前を入力します。入力したら「完了」をクリックします

Es gibt zunächst keine Bibliothek für JUnit3, daher werden Sie gefragt, ob Sie sie hinzufügen möchten. Wählen Sie "Nächste Aktion ausführen", wählen Sie "JUnit 3-Bibliothek zum Erstellen eines Pfads hinzufügen" und drücken Sie OK.

「次のアクションを実行」を選択し、「JUnit 3 ライブラリーをビルド・パスに追加」を選択し、OKを押します
Der erstellte JUnit-Testfall ist nur eine Java-Programmdatei. Schreiben Sie diesmal wie folgt.

CartTest.java


package myStore;

import junit.framework.TestCase;

import java.util.List;

public class CartTest extends TestCase {
public void test Überprüfen Sie, ob es dem Warenkorb hinzugefügt wurde() {
				//Stellen Sie zuerst die Produkte her, die für den Test eingeführt werden sollen
		Product apple = new Product("A001", "Apfel", 158);
		Product orange = new Product("A002", "Orange", 258);

		//Warenkorb erstellen
		Cart cart = new Cart();
		//Fügen Sie Äpfel und Orangen hinzu
		cart.add(apple);
		cart.add(orange);
		
		//Überprüfen Sie von hier aus
		List<Product> list = cart.getList(); //Holen Sie sich die Liste in den Warenkorb
		
		//Überprüfen Sie, ob der Einkaufswagen zwei enthält
		assertEquals(2, list.size());
		
		//Überprüfen Sie, ob der Inhalt des Warenkorbs korrekt ist
		Product item;
		item= list.get(0);  //Nehmen Sie den ersten Artikel in den Warenkorb und beginnen Sie mit der Überprüfung
		assertEquals("Überprüfung, ob die erste Produkt-ID im Warenkorb A001 lautet", "A001", item.getProductId());
		assertEquals("Überprüfung, ob der erste Produktname im Warenkorb Apfel ist", "Apfel", item.getProductName());
		assertEquals("Überprüfung, ob der erste Preis des Wagens 158 beträgt", (Integer)158, item.getPrice());
		
		item = list.get(1); //Nehmen Sie den zweiten Artikel in den Warenkorb und beginnen Sie mit der Überprüfung
		assertEquals("Überprüfung, ob die erste Produkt-ID im Warenkorb A002 lautet", "A002", item.getProductId());
		assertEquals("Überprüfen Sie, ob der erste Produktname im Warenkorb orange ist", "Orange", item.getProductName());
		assertEquals("Überprüfung, dass der erste Preis des Wagens 258 beträgt", (Integer)258, item.getPrice());
	}
}

Die Versprechen von JUnit 3 lauten wie folgt. --Schreibe import junit.framework.TestCase;

  • Die Testklasse erbt die TestCase-Klasse mit erweitertem TestCase
  • Testmethodenmodifikatoren beginnen mit "public void" und der Name beginnt mit "test"

Erstellen Sie nach den oben genannten Regeln. Sie können so viele Testmethoden erstellen, wie Sie möchten, indem Sie mit "Test" beginnen. Erstellen Sie daher bitte Tests mit verschiedenen Mustern. Außerdem enthält der Methodenname Japanisch, was für Java kein Problem darstellt (kein Problem in Bezug auf die Spezifikationen). In JUnit wird häufig Japanisch verwendet, um zu verstehen, welcher Test durchgeführt wird [^ 1]. Ist das nicht einfacher zu verstehen als "testNo1" zu schreiben?

Möglicherweise stellen Sie auch fest, dass das erste Argument von assertEquals eine Zeichenfolge enthält, stellen Sie sich dies jedoch als Kommentar vor. Wenn Sie dies verlassen, wird dieses erste Argument beim Testen mit JUnit als Meldung angezeigt und Sie können sehen, was der beabsichtigte Test fehlgeschlagen ist.

[^ 1]: Wenn jedoch ein Raum mit halber Breite vorhanden ist, tritt ein Fehler auf. Wählen Sie daher ein Wort aus, das den Test in einem Wort ausdrücken kann.

Erstellen Sie einen JUnit 4-Testfall

Erstellen Sie einen JUnit4-Testfall
Erstellen Sie einen JUnit4-Testfall
1. Wählen Sie New JUnit 4 Test 2. Geben Sie den Namen der Klasse ein, um den Testfall in Name (rote Linie) zu schreiben. "Test Ziel Test" scheint gut zu sein. 3. Geben Sie für den Paketnamen (blaue Linie) dasselbe Paket wie das Ziel der Testklasse an (der Teil "package XXX;", der zu Beginn des zu testenden Java-Programms geschrieben wurde). 4. Klicken Sie auf Fertig stellen. パッケージ名と名前を書くクラスの名前を入力します。入力したら「完了」をクリックします

Es gibt zunächst keine Bibliothek für JUnit 4, daher werden Sie gefragt, ob Sie sie hinzufügen möchten. Wählen Sie "Nächste Aktion ausführen", wählen Sie "JUnit 4-Bibliothek zum Erstellen eines Pfads hinzufügen" und drücken Sie OK.

「次のアクションを実行」を選択し、「JUnit 4 ライブラリーをビルド・パスに追加」を選択し、OKを押します
Der erstellte JUnit-Testfall ist nur eine Java-Programmdatei. Schreiben Sie diesmal wie folgt.

CartTest2.java


package myStore;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;

public class CartTest {
	@Test
public void Überprüfen Sie, ob es dem Warenkorb hinzugefügt wurde() {
		//Stellen Sie zuerst die Produkte her, die für den Test eingeführt werden sollen
		Product apple = new Product("A001", "Apfel", 158);
		Product orange = new Product("A002", "Orange", 258);

		//Warenkorb erstellen
		Cart cart = new Cart();
		//Fügen Sie Äpfel und Orangen hinzu
		cart.add(apple);
		cart.add(orange);

		//Überprüfen Sie von hier aus
		List<Product> list = cart.getList(); //Holen Sie sich die Liste in den Warenkorb

		//Überprüfen Sie, ob der Einkaufswagen zwei enthält
		assertEquals(2, list.size());

		//Überprüfen Sie, ob der Inhalt des Warenkorbs korrekt ist
		Product item;
		item= list.get(0);  //Nehmen Sie den ersten Artikel in den Warenkorb
		assertThat(item.getProductId(), is("A001")); //Überprüfung der Produkt-ID des extrahierten Produkts
		assertThat(item.getProductName(), is("Apfel")); //Überprüfung des Produktnamens des extrahierten Produkts
		assertThat(item.getPrice(), is(158)); //Überprüfung des Produktnamens des extrahierten Produkts

		item = list.get(1); //Nehmen Sie den zweiten Artikel in den Warenkorb und beginnen Sie mit der Überprüfung
		assertThat(item.getProductId(), is("A002")); //Überprüfung der Produkt-ID des extrahierten Produkts
		assertThat(item.getProductName(), is("Orange")); //Überprüfung des Produktnamens des extrahierten Produkts
		assertThat(item.getPrice(), is(258)); //Überprüfung des Produktnamens des extrahierten Produkts
	}
}

Die Versprechen von JUnit 4 lauten wie folgt.

  • Schreiben Sie zuerst Folgendes
    • import static org.hamcrest.CoreMatchers.*;
    • import static org.junit.Assert.*;
    • import org.junit.Test;
  • Der Modifikator für die Testmethode ist "public void"
  • Schreiben Sie "@ Test" vor der Testmethode
  • Die Überprüfung sollte als "assertThat (Überprüfungsziel, ist (gewünschter Wert))" geschrieben werden

Erstellen Sie nach den oben genannten Regeln. Sie können beliebig viele Testmethoden erstellen, indem Sie "@ Test" hinzufügen. Erstellen Sie daher Tests mit verschiedenen Mustern. Außerdem enthält der Methodenname Japanisch, was für Java kein Problem darstellt (kein Problem in Bezug auf die Spezifikationen). In JUnit wird häufig Japanisch verwendet, um zu verstehen, welcher Test durchgeführt wird [^ 1]. Ist das nicht einfacher zu verstehen als "testNo1" zu schreiben?

Möglicherweise stellen Sie auch fest, dass das erste Argument von assertEquals eine Zeichenfolge enthält, stellen Sie sich dies jedoch als Kommentar vor. Wenn Sie dies verlassen, wird dieses erste Argument beim Testen mit JUnit als Meldung angezeigt und Sie können sehen, was der beabsichtigte Test fehlgeschlagen ist.

Es ist eine Schlange, aber Sie können Code schreiben, der fast dem von JUnit 3 entspricht

CartTest.java


package myStore;

import static org.junit.Assert.*;
import org.junit.Test;
import java.util.List;

public class CartTest {
	@Test
public void Überprüfen Sie, ob es dem Warenkorb hinzugefügt wurde() {
		//Stellen Sie zuerst die Produkte her, die für den Test eingeführt werden sollen
		Product apple = new Product("A001", "Apfel", 158);
		Product orange = new Product("A002", "Orange", 258);

		//Warenkorb erstellen
		Cart cart = new Cart();
		//Fügen Sie Äpfel und Orangen hinzu
		cart.add(apple);
		cart.add(orange);

		//Überprüfen Sie von hier aus
		List<Product> list = cart.getList(); //Holen Sie sich die Liste in den Warenkorb

		//Überprüfen Sie, ob der Einkaufswagen zwei enthält
		assertEquals(2, list.size());

		//Überprüfen Sie, ob der Inhalt des Warenkorbs korrekt ist
		Product item;
		item= list.get(0);  //Nehmen Sie den ersten Artikel in den Warenkorb und beginnen Sie mit der Überprüfung
		assertEquals("Überprüfung, ob die erste Produkt-ID im Warenkorb A001 lautet", "A001", item.getProductId());
		assertEquals("Überprüfung, ob der erste Produktname im Warenkorb Apfel ist", "Apfel", item.getProductName());
		assertEquals("Überprüfung, ob der erste Preis des Wagens 158 beträgt", (Integer)158, item.getPrice());

		item = list.get(1); //Nehmen Sie den zweiten Artikel in den Warenkorb und beginnen Sie mit der Überprüfung
		assertEquals("Überprüfung, ob die zweite Produkt-ID im Warenkorb A002 lautet", "A002", item.getProductId());
		assertEquals("Überprüfen Sie, ob der zweite Produktname des Warenkorbs orange ist", "Orange", item.getProductName());
		assertEquals("Überprüfung, dass der zweite Preis des Wagens 258 beträgt", (Integer)258, item.getPrice());
	}
}

Wie schreibe ich JUnit4

Ich habe in den frühen Stadien assertEquals verwendet, daher hier ein zusätzlicher Kurs. In JUnit 4 können Sie wie folgt schreiben. Von nun an wird dies die Hauptsache sein.

assertThat( target, is("target") );

Es ist fast dasselbe wie "assertEquals", aber es hat den großen Vorteil, von links nach rechts lesen zu können. Es ist wie zu behaupten, dass das Ziel "Ziel" ist (stellen Sie sicher, dass das Ziel "Ziel" ist). Sie können auch so schreiben. is und not heißen Matcher.

assertThat( target, is( not( "not target") ) )

Referenz: Java Master - Einführung in die grundlegende Verwendung von JUnit Verwendung von JUnit (Anfänger)

Führen Sie JUnit aus

Führen Sie den erstellten Testfall aus. Wählen Sie Menü Ausführen → Ausführen → Einheitentest.

スクリーンショット 2020-08-10 11.27.02.png

Dann erscheint irgendwo auf dem Bildschirm der folgende Bildschirm.

Wenn es nicht angezeigt wird, wählen Sie "Window" -Menü-> "View View" -> "Other" und dann "Java" -> "JUnit" (rote Linie).
「ウィンドウ」メニュー→「ビューの表示」→「その他」を選択 「Java」→「JUnit」(赤線部)を選択
JUnitの実行画面

Klicken Sie nun auf das Dreieck links von myStore.CartTest. Sie können unten sehen, welchen Test Sie durchgeführt haben. Erfolgreiche Tests werden grün und fehlgeschlagene Tests rot angezeigt. クラス内で実行したテストを表示

Übrigens, ändern wir "A001" in der 28. Zeile des Testprogramms in "A003" und versuchen es erneut. Sie können mit der rechten Maustaste klicken, um es auf die gleiche Weise wie zuvor auszuführen. Wenn Sie jedoch eine JUnit-Ansicht haben, können Sie es erneut ausführen, indem Sie auf "Test erneut ausführen" (rote Linie) klicken. 「テストの再実行」(赤線部)を押すと再実行可能

Da die Datei durch Ändern von "A001" in "A003" geändert wurde, wird ein Dialogfeld angezeigt, in dem Sie gefragt werden, ob Sie sie speichern möchten. Wenn kein Problem vorliegt, drücken Sie "OK". Wenn Sie das Kontrollkästchen neben dem Dateinamen deaktivieren, wird das Programm ausgeführt, bevor die Datei gespeichert wird. 保存して起動ダイアログが表示されたら「OK」を押す

Anschließend wird links unten im Symbol ein Ultramarin-Kreuz angebracht. Dies ist ein Zeichen des Scheiterns. Klicken Sie dann auf den fehlgeschlagenen Test, um zu sehen, wo er im Testfall fehlgeschlagen ist. Doppelklicken Sie darauf, um die betreffende Zeile anzuzeigen. 失敗したテストをクリックすると、テストケースのどこで失敗したか表示されます。これをダブルクリックすると対象の行が表示されます。

Wenn Sie hinter das "junit.framework.ComparisonFailure:" der Fehlerverfolgung schauen, sehen Sie in den Details des Fehlers die Beschreibung "Es gibt eine Bestätigung, dass die erste Produkt-ID des Warenkorbs A001 lautet". .. Außerdem wird der korrekte Wert in "Erwartet: ist" und der tatsächliche Wert (Ausführungsergebnis) in "aber: war" angezeigt. エラーの詳細にカートの1つめの商品IDがA001であるかの確認があることが確認できる

Nun, es ist eine lange Geschichte, aber das war's.


Was ist ein Säulentest? Was ist Qualität? Was und wie zu inspizieren?

Es ist nur ein Gedicht

JUnit schrieb, dass Ausführung und Überprüfung zwei wichtige Dinge sind. Von diesen möchte ich auf die Überprüfung eingehen. Hier ist es super kompliziert, also kannst du es überspringen. Bei der Validierung wird überprüft, ob der Wert des Ergebnisses des Laufs mit dem erwarteten Ergebnis übereinstimmt. Es gibt jedoch Kontroversen darüber, was validiert werden soll. Es mag eine eindeutige richtige Antwort geben, aber ich weiß es nicht (ich kenne @ t_wada-san ...).

Angenommen, Sie haben die folgende Klasse.

SomeClass.java


class SomeClass {
  private String somethingvalue = "";
  public void setSomethingValue(String somethingvalue) {
    this.somethingvalue = somethingvalue;
  }
}

Diese Klasse kann nur Daten für zukünftige Erweiterungen speichern. Es gibt einen "setSomethingValue", der die Daten "etwas Wert" festlegt, der beibehalten werden soll. Es gibt jedoch kein "getSomethingValue", um den Wert von "value" abzurufen. Was soll ich mit diesem setSomethingValue Test machen? Meine persönliche Antwort lautet "basierend auf Projektrichtlinien und -spezifikationen". Selbst wenn es sich um eine private Variable (Eigenschaft) handelt, kann der Wert des Werts mithilfe der Funktion Reflection in Java ermittelt werden. [^ 2] Darüber hinaus über Projekte und Spezifikationen

――Wenn das Projekt oder die Spezifikation "auf Wert setzen" lautet, ist es sehr wahrscheinlich, dass es getestet wird. --Wenn die Richtlinie "Private Variablen nicht prüfen" oder "Mit von der Klasse veröffentlichten Eigenschaften und Methoden prüfen" lautet, wird sie nicht getestet (da es keinen anderen Weg gibt, auf Werte zuzugreifen als Reflektion).

Ich würde gerne die letztere Perspektive einnehmen, aber in diesem Fall gibt es ein etwas nerviges Problem. Wenn Sie eine Methode hinzufügen, die die folgenden Werte für die angegebene Anzahl von Malen wiederholt anzeigt

public String repeatSpeak(int times) {
  String result = "";
  for (int i=0; i < times; i++) {
    result += this.value;
  }
  return result;
}

Dieser repeatSpeak ist eine öffentliche Methode (= wird von jemandem verwendet) und wird daher getestet. Zu diesem Zeitpunkt ändert sich der Wert abhängig von "Wert". Sie würden also auch einen Test schreiben, der "setValue" verwendet, um "value" zu ändern. Ich denke, es ist möglich, indirekt und nicht direkt so zu testen.

Für die Teamentwicklung ist es erforderlich, eine ** einheitliche Perspektive ** im Projekt zu haben, die auf Perspektiven wie "Was", "Wie" und "Wer" basiert, also wie dies am Einsatzort usw. zu tun ist. Fragen Sie, ob Sie testen möchten. Wenn Sie sich nicht entschieden haben, lassen Sie die Mitglieder des Teams zu Beginn der Entwicklung eine einheitliche Perspektive teilen.

[^ 2]: Siehe Reflexion: Samurai-Blog- [Einführung in Java] Ausführen von Methoden und Ändern von Feldern mit Reflexion, Hishidama Seitenreflexion des technischen Memos,

Recommended Posts

[Für Neulinge] Einführung von JUnit
Gradle-Einstellungen für die Verwendung von JUnit 5
Einführung des "" Monitoring Tool "" zur Überwachung von Docker
[Für unsere Neulinge] Über isXXX-Methoden
Einführung in Java-Tipps GreenMail zu Junit5
junit
Wichtige Punkte für die Einführung von gRPC in Java
Idee, Symbole für OOP in das Flussdiagramm einzufügen