如何测试Java接口? [重复] - java

This question already has answers here:

How can i test an interface?

(4个答案)

7年前关闭。

我有一个接口和一个实现该接口并覆盖其方法的类:

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

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

java大神给出的解决方案

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

应该是这样的:

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

虽然,我看不到您为什么要测试接口。

在Java中将华氏度转换为摄氏温度[重复] - java

This question already has answers here: Double value returns 0 [duplicate] (3个答案) 6年前关闭。 我正在尝试将华氏度转换为摄氏温度。现在当我使用此错误时:double fahrenheit=input.nextDouble(); double celsius= ( **5** /…

从long到int,如果long值足够小以适合int [重复] - java

This question already has answers here: Safely casting long to int in Java (10个回答) 7年前关闭。 如果long值足够小以适合int,可以自动将long转换为int吗?long i=1; int j=i; //Error Type mismatch: cannot convert…

除了在类上访问属性时,为什么类在Java中没有定义符号? [重复] - java

This question already has answers here: Are Java classes objects? (4个答案) 在8个月前关闭。 考虑最简单的示例。我们有public class Foo {} 因此我们可以说Foo.class // ==> class Foo 因此,有理由认为Foo应该是java.lang.Class…

使用-source 8或更高版本来启用lambda表达式[重复] - java

This question already has answers here: Specifying java version in maven - differences between properties and compiler plugin (3个答案) 去年关闭。 当我尝试运行Maven构建时遇到构建错误。我创建了一个包含lambda函数的简单J…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…