我想運行不同的接口實現相同的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 [分別是汽車])。 –