Il est plus logique d'utiliser @Before dans certains cas, car il est appelé APRÈS le constructeur de la classe. Cette différence est importante lorsque vous utilisez un framework mock comme Mockito avec les annotations @Mock, car votre méthode @Before sera appelée après l'initialisation des mocks. Vous pouvez alors utiliser vos mocks pour fournir des arguments de constructeur à la classe testée.
Je trouve que c'est un modèle très courant dans mes tests unitaires lorsqu'on utilise des beans en collaboration.
Voici un exemple (certes artificiel) :
@RunWith(MockitoJUnitRunner.class)
public class CalculatorTest {
@Mock Adder adder;
@Mock Subtractor subtractor;
@Mock Divider divider;
@Mock Multiplier multiplier;
Calculator calculator;
@Before
public void setUp() {
calculator = new Calculator(adder,subtractor,divider,multiplier);
}
@Test
public void testAdd() {
BigDecimal value = calculator.add(2,2);
verify(adder).add(eq(2),eq(2));
}
}
1 votes
Duplicata possible de setUp/tearDown (@Before/@After) : pourquoi en avons-nous besoin dans JUnit ?
0 votes
Voir aussi : stackoverflow.com/questions/512184/
0 votes
Tu es sûr que tu veux dire
@Before
pas@BeforeClass
? Vérifiez la différence aquí .