Я сделал простой тестовый класс, чтобы упростить мою настоящую проблему:
открытый класс BidonTest {
@Mocked
IBidon ibidon;
@Mocked
IBidon ibidon2;
@Mocked
Bidon bidon;
@Mocked
Bidon bidon2;
@Test
public void testBidon(){
new NonStrictExpectations(2, Bidon.class){
{
ibidon.doIt(); result = "i: coco";
ibidon2.doIt(); result = "i: ismael et jordan";
bidon.doIt(); result = "c: coco";
bidon2.doIt(); result = "c: ismael et jordan";
}
};
System.out.println(ibidon.doIt());
System.out.println(ibidon2.doIt());
System.out.println(bidon.doIt());
System.out.println(bidon2.doIt());
}
public interface IBidon{
public String doIt();
}
public class Bidon implements IBidon{
@Override
public String doIt(){
return "toto";
}
}
}
Ниже результат теста:
i: coco
i: coco
c: coco
c: ismael et jordan
Мой первый вопрос: почему ibidon2 возвращает "coco"? (даже если у меня мало идей, но, может быть, кто-то здесь является экспертом JMockit: D) Мой второй вопрос: как я могу изменить его, чтобы он возвращал «ismael et jordan»?
new NonStrictExpectations()
. Параметрint
предназначен только для повторной записи ожиданий, а параметр, который принимает литералClass
, предназначен только для частичных динамических имитаций (в этом случае классBidon
уже имитируется через два поля имитации). - person Rogério   schedule 12.01.2012