[Einführung in die JUnit-Praxis](https://www.amazon.co.jp/JUnit%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-~%E4%BD% 93% E7% B3% BB% E7% 9A% 84% E3% 81% AB% E5% AD% A6% E3% 81% B6% E3% 83% A6% E3% 83% 8B% E3% 83% 83% E3% 83% 88% E3% 83% 86% E3% 82% B9% E3% 83% 88% E3% 81% AE% E6% 8A% 80% E6% B3% 95-WEB-PRESS-plus / dp / Wenn Sie 477415377X) haben, ist daran nichts auszusetzen, aber ich habe es oft nicht, daher fasse ich nur diejenigen zusammen, die es häufig verwenden.
@Test
public void test1() {
String actual = "hoge";
String expected = "hoge";
assertThat(actual, is(expected));
}
@Test
public void test2() {
String actual = null;
assertThat(actual, is(nullValue()));
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
Die mit "@ Test" kommentierte Methode ist die eigentliche Testmethode. Vergleichen Sie den erwarteten Wert mit dem tatsächlichen Wert mit "assertThat ()". Im Beispiel werden "is ()" und "nullValue ()" verwendet, es gibt jedoch auch andere Verwendungen wie "not ()".
"@ Before" wird ausgeführt, bevor jede Methode von "@ Test" ausgeführt wird, und "@ After" wird ausgeführt, nachdem jede Methode von "@ Test" ausgeführt wurde. Wenn jedem Test ein Prozess gemeinsam ist, z. B. das Verbinden und Trennen mit der Datenbank, können Sie ihn hier schreiben.
"@ BeforeClass" wird nur einmal ausgeführt, bevor alle "@ Test" -Methoden ausgeführt werden, und "@ AfterClass" wird nur einmal ausgeführt, nachdem alle "@ Test" -Methoden ausgeführt wurden. @ BeforeClass
wird verwendet, wenn Testparameter aus Eigenschaftendateien abgerufen werden. Ich glaube nicht, dass ich @ AfterClass
sehr oft benutze ...
Im Beispiel ist nichts wie "@ Before" geschrieben, aber Sie können hier einen Test mit "assertThat ()" schreiben. Sie können den Status auch vor und nach jedem Prozess testen.
@RunWith(Enclosed.class)
public class JUnitTest {
public static class TestClass1 {
@Before
public void setUp() throws Exception {
//Vorverarbeitung für Testklasse 1
}
@After
public void tearDown() throws Exception {
//Nachbearbeitung für Testklasse 1
}
@Test
public void test() {
String actual = "hoge";
String expected = "hoge";
assertThat(actual, is(expected));
}
}
public static class TestClass2 {
@Before
public void setUp() throws Exception {
//Vorverarbeitung für Testklasse 2
}
@After
public void tearDown() throws Exception {
//Nachbearbeitung für Testklasse 2
}
@Test
public void test() {
String actual = "fuge";
String expected = "fuge";
assertThat(actual, is(expected));
}
}
}
Wenn die Vorverarbeitung für jeden Test unterschiedlich ist, fügen Sie der Testklasse "@RunWith (Enclosed.class)" hinzu und erstellen Sie dann eine innere Klasse. Im Beispiel können "TestClass1" und "TestClass2" unterschiedliche Vor- und Nachbearbeitungen ausführen. Es ist praktisch, aber ich vergesse jedes Mal, wie man die Anmerkung "@RunWith (Enclosed.class)" schreibt.
@RunWith(Theories.class)
public class JUnitTest {
@DataPoints
public static String[] actualValues = {"hoge", "fuge"};
@Theory
public void test(String actualValue) {
int actual = actualValue.length();
int expected = 4;
assertThat(actual, is(expected));
}
}
Wenn es mehrere Tests mit ähnlichen Eingabe- und Ausgabeformaten gibt, ist es besser, sie bis zu einem gewissen Grad zusammenzustellen. Geben Sie für die Testklasse "@RunWith (Theories.class)" und für die Testmethode "@ Theory" anstelle von "@ Test" an. Wenn Sie die Eingabe und Ausgabe des Tests in ein Array von "@ DataPoints" einfügen und den Wert des durch "@ DataPoints" angegebenen Typs im Argument der Methode "@ Theory" angeben, ist dies "@ Theory". Wenn die Methode ausgeführt wird, wird der Test für die Anzahl der Arrays von "@ DataPoints" ausgeführt.
Recommended Posts