Ho anche più casi di test e se la logica è diversa, l'output deve essere uguale su tutti. Quindi stavo pensando a come generalizzarli e inserire il metodo Assert solo una volta.Il metodo Asserting sul tearDown (@After) è sbagliato?
Esiste un modo migliore per farlo che questo:
static public class Tests() {
private static String expected = null;
private String actual = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
expected = new String("My Desired Output");
}
@Before
public void setUp() {
actual = new String();
}
@Test
public void test1() throws Exception {
actual = ...
}
@Test
public void test2() throws Exception {
actual = ...
}
@After
public void tearDown() throws Exception {
assertThat(actual, is(equalTo(expected)));
}
@AfterClass
public static void tearDownAfterClass() {
}
}
metodo di lavoro:
@Test
public void runTests() {
Result result = JUnitCore.runClasses(Tests.class);
assertThat(result.getRunCount(), is(2));
assertThat(result.getFailureCount(), is(0));
}
La classe che sto testando è una specie di classe builder, quindi posso creare il mio output utilizzando metodi diversi. Facendo questi test posso assicurare che tutti i miei metodi funzionano e l'output è generato correttamente. Ho già rilevato un errore in uno dei miei metodi. – Alexander
Inoltre, l'uso della statica nei test è una cattiva idea. – emory
@emory, vuoi dire affermare contro una variabile statica o usare metodi statici o entrambi? – Alexander