2

我做了一个简单的测试类来简化我的实际问题:

公共类 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”?

4

1 回答 1

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避免断言。)

于 2012-01-09T21:12:47.297 回答