3

インターフェイスと、そのインターフェイスを実装し、そのメソッドをオーバーライドするクラスがあります。

public interface Intr {
public int method1();
public int method2();
}


public class example implements Intr{
@override
public int method1()
{
//stmts
}
@override
public int method2(){
//stmts
}
} 

JUnit テストを作成して、テストにクラスを実装せずにそのインターフェイスをテストしたいのですが、次のようなコードを使用しました。

public class TIntr {

    private Intr interface;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Test
    public Object testMethod1() {
        try{
        int result = interface.method1();
        assertEquals(something, result);
        }catch(Exception e){
        fail("Test Failed!!");
        }


        @Test
    public Object testMethod1() {
        try{
        int result = interface.method2();
        assertEquals(something, result);
        }catch(Exception e){
        fail("Test Failed!!");
        }
}

しかし、クラスからインスタンスを作成せず、型インターフェイスから変数のみを作成したため、メソッドの実行は常にnull値を生成するため、テストは常に失敗します。

4

1 に答える 1

3

EasyMockを使用してみてください。EasyMockインターフェイスに基づいてモック オブジェクトを作成します。モック オブジェクトはインターフェイスのすべてのメソッドを実装し、指定したメソッド (たとえば、expect を使用) については、呼び出されたときに指定された動作を「再生」します。

次のようになります。

Intr mockedDependency = createMock(Intr.class);
expect(mockedDependency.method1()).andReturn(100);

ただし、なぜインターフェイスをテストしているのかわかりません。

于 2013-06-14T16:00:11.660 に答える