0

私は Java と JMock が初めてで、現在、モッキングに頭を悩ませようとしています。ダミー クラスを使用して、このダミー テストを作成しました。

public class JmockUnitTest {
    private Mockery context = new Mockery();

    private Class2 class2 = context.mock(Class2.class);

    @Test
    public void testMethod() {

        Class1 class1 = new Class1();

        context.checking(new Expectations() {{
            oneOf(class2).method2();
            will(returnValue(1234));
        }});

        class1.method1();
    }


public class Class1 {

    public void method1() {
        Class2 class2 = new Class2Impl();
        Integer time = class2.method2();
    }
}

public interface Class2 {
    public Integer method2();
}

public class Class2Impl implements Class2 {
    public Integer method2() {
        return 10;
    }
}

}

私の Class2Impl.method2() は整数 10 を返しますが、期待値は 1234 に設定されています。10を返すことを確認することは可能ですか、それとも意味がありますか?

ありがとう

4

2 に答える 2

2

問題は、Class2のインスタンスをClass1のインスタンスに渡していないことであり、2つのオブジェクトをバインドする方法がありません。JMockは、オブジェクトがどのように連携するかをテストするために設計されているため、オブジェクトのグラフを設定する方法が必要です。それはセッターまたはコンストラクターを介したものである可能性があります。あなたの場合、Class2が本当に単純で値を返すだけの場合は、モックを使用するのではなく、実際のインスタンスを使用する価値があるかもしれません。

モックを使用する場合は、他の投稿にあるように、@ RunWith(JMock.class)またはassertIsSatisfied()を使用するか、バージョン管理にある新しいモッカリーjunitルールを試す必要があります。

于 2011-08-03T11:04:22.970 に答える
1

追加

 context.assertIsSatisfied();

あなたのテストの終わりまで。これにより、JMock は、定義したすべての期待が満たされていることを確認します。

于 2011-08-02T19:46:47.433 に答える