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
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);
}
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
 
@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);
    }
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.

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,