Bonjour,
Je suis confronté à un problème durant l'un de mes tests et je ne vois pas comment le contourner.
Voici la classe (et la méthode) que je veux tester
Dans ma classe de test, ça donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public void doCalculation(String idf, Calendar startDate) throws CalculationException { //Initialisation du profil Profil profil = null ; try { //Instancition du profil profil = new profil(idf, startDate) ; //Lecture des données profil.read(); if (startDate.before(profil.getGroup().getBeginDate())) { throw new IncoherenceDateException("Incoherence date for idf " + profil.getIdf()) ; } processResult(profil); }
Mon mock sur la classe Profil n'a aucun impact et du coup l'appel de la méthode read est réalisé et fait planter le test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @RunWith(PowerMockRunner.class) @PrepareForTest(Profil.class) public class CalculationImplTest extends TestCase{ @Spy Profil mockedProfil = new Profil ("123456789012", getStartDate(2017, Calendar.JANUARY, 1)) ; public void setUp() throws Exception { super.setUp(); Mockito.doNothing().when(mockedProfil).readProfil(); } public void testDoCalculationIncoherenceDate() throws Exception { Calendar startDate= Calendar.getInstance() ; CalculationImpl impl = new CalculationImpl() ; impl.doCalculation("001", startDate); }
Est ce qu'il y a un moyen pour que je puisse mocker la classe Profil et simuler l'appel de la méthode read ?
Pour le moment je travaille avec Mockito, mais j'ai aussi powermock dans mes dépendances et il est utilisé à d'autres endroits des tests.
Merci d'avance,
Partager