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)2番目の質問は、「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 に答える