J'ai plusieurs cas de test même et si la logique est différente, la sortie doit être égale sur chacun d'eux. Je pensais donc à les généraliser et à ne placer la méthode Assert qu'une seule fois.Est-ce que l'affirmation de la méthode tearDown (@After) est fausse?
Est-il possible de mieux faire que celui-ci:
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() {
}
}
méthode en cours:
@Test
public void runTests() {
Result result = JUnitCore.runClasses(Tests.class);
assertThat(result.getRunCount(), is(2));
assertThat(result.getFailureCount(), is(0));
}
La classe que je suis en train de tester est en quelque sorte une classe de construction, donc je peux construire ma sortie en utilisant différentes méthodes. En faisant ces tests, je peux m'assurer que toutes mes méthodes fonctionnent et que la sortie est générée correctement. J'ai déjà détecté un bug dans l'une de mes méthodes. – Alexander
En outre, l'utilisation de la statique dans votre test est une mauvaise idée. – emory
@emory, vous voulez dire affirmer contre une variable statique ou en utilisant des méthodes statiques ou les deux? – Alexander