我想运行不同的接口实现相同的JUnit测试。我发现与@Parameter选项很好的解决方案:用同样的测试测试多接口的实现 - JUnit4
public class InterfaceTest{
MyInterface interface;
public InterfaceTest(MyInterface interface) {
this.interface = interface;
}
@Parameters
public static Collection<Object[]> getParameters()
{
return Arrays.asList(new Object[][] {
{ new GoodInterfaceImpl() },
{ new AnotherInterfaceImpl() }
});
}
}
此测试将被运行两次,先用GoodInterfaceImpl然后用AnotherInterfaceImpl类。但问题是我需要为大多数测试用例创建一个新对象。一个简单的例子:
@Test
public void isEmptyTest(){
assertTrue(interface.isEmpty());
}
@Test
public void insertTest(){
interface.insert(new Object());
assertFalse(interface.isEmpty());
}
如果isEmptyTest在insertTest后运行失败。
是否有与实施的新实例自动运行测试用例每一个选项?
BTW:实现明确的()或复位() - 方法的接口是不是一个真正的选择,因为我不需要它的生产代码。
我建议寻找到依赖注入。这里是一篇关于如何使用它来完成你正在寻找的东西的小文章 http://www.javaranch.com/journal/200709/dependency-injection-unit-testing.html –
感谢您的快速回答!但是这篇文章描述了如何打破一个接口的依赖关系。我想测试接口(而不是使用接口的类,或者根据文章说话:我想测试远程服务器场(分别是引擎)而不是农场servlet [分别是汽车])。 –