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!!");
        }
}

但是测试总是失败,因为方法的执行总是生成空值,因为我没有从类创建实例,只是从类型接口创建一个变量。

4

1 回答 1

3

尝试使用EasyMockEasyMock基于接口创建一个模拟对象。模拟对象实现了接口的所有方法,并且对于您指定的那些方法(例如使用expect),它在调用它们时“重放”指定的行为。

它应该是这样的:

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

虽然,我不明白你为什么要测试接口。

于 2013-06-14T16:00:11.660 回答