我制作了一个简单的测试类来简化我的实际问题:
公共类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”?
答案 0 :(得分:0)
修复你的来源后,它对我来说很好。
package main;
import mockit.Mocked;
import mockit.NonStrictExpectations;
import org.junit.Test;
public class TestBidon {
@Mocked IBidon ibidon;
@Mocked IBidon ibidon2;
@Mocked Bidon bidon;
@Mocked Bidon bidon2;
@Test public void testBidon() {
new NonStrictExpectations() {{
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());
}
}
产地:
i: coco
i: ismael et jordan
c: coco
c: ismael et jordan
您使用的是哪个版本?以上是通过0.999.12。
(也不确定为什么你在这里使用调用计数,因为它依赖于NonStrictInvocation
来避免断言。)