我该如何测试界面?

Muh*_*aat 1 java testing junit interface object

我想为一个接口做一个JUnit测试用例,因为你知道我不能从接口创建一个对象,我不希望在该测试中显示任何类名,我只想测试接口而且只是在测试中使用它的方法.

所以,我不能实例化一个像这样的对象:

Interface obj = new Class(); 
Run Code Online (Sandbox Code Playgroud)

因为我不会使用任何类方法,我不想将接口实例化为:

Interface var = new Interface{//methods};
Run Code Online (Sandbox Code Playgroud)

因为我不想覆盖测试中的方法.

更新:

i have an interface and a class which implements it:
public interface inter {
public void method1();
public void method2();
}


public class BlaBla implements inter{
@override
public void method1(){//stuff}
@override
public void method2(){//stuff}
}
Run Code Online (Sandbox Code Playgroud)

我想测试BlaBla但是用它的界面(inter)处理我的测试.

Bor*_*der 18

一个interface是一个合同.没有逻辑可以测试.

您可以使用模拟框架Mockito来创建一个实例,而interface无需手动存根方法.但它只会在后台存根.

你要问自己是什么你想测试?鉴于interface方法没有实现,没有代码可以测试.

说我interface喜欢这样

public interface DoesStuff {
    void doStuff();
}
Run Code Online (Sandbox Code Playgroud)

有什么可以测试的?我曾经说过的唯一的事情是,我想一个类implements DoesStuffdoStuff.

  • 如果你想在你的测试中使用`interface` _in_那么这是一个不同的问题.你在测试依赖于这个接口的另一个`class`吗? (2认同)
  • 在这种情况下,请查看我的 Mockito 链接 - 这正是您想要的。你甚至可以让模拟界面使用流畅的命令做一些事情,比如`when(myIntefaceInstance.getName()).thenReturn("Bob")`。 (2认同)

Ósc*_*pez 6

测试接口的唯一方法是创建一个实现它的具体类,实例化它并测试该类.您无法直接测试接口,因为如您所知,它无法实例化,无需进行任何测试.这应该是显而易见的:接口只是方法签名的集合,没有方法体 - 因此没有要测试的行为.