TestNG 6.8.8
我有以下界面:
public interface MyInterface{
/**
* Some contract
**/
public String convert(String arg);
}
现在我有一堆MyInterface
个实施:MyInterface1Impl
,MyInterface2Impl
,MyInterface3Impl
等......
问题是我想测试JavaDoc
中定义的一般合同以及具体实现的细节。我写这样的东西:
public class MyInterfacecontractTestSuite{
@Test(dataProvider="someDataProvider")
public void testContract(MyInterface mi, String arg){
//test
}
}
,例如
public class MyInterface1ImplTest{
//test cases for the implementation MyInterface1Impl
}
但它看起来有点乱,因为MyInterface1Impl
的情况并非全都在MyInterface1ImplTest
类中,这可能让人感到困惑。
但是在每个实现测试类中为一般合同设置重复的测试用例也很奇怪。
所以,如果我选择正确的话,我并不确定。也许有更好的解决方案来测试这些合同。
答案 0 :(得分:1)
为什么不能这样:
public abstract class MyInterfacecontractTestSuite {
@Test(dataProvider="someDataProvider")
public void testContract(String arg) {
//test against getMi()
}
public abstract MyInterface getMi();
}
public class MyInterface1ImplTest extends MyInterfacecontractTestSuite {
private MyInterface1Impl mi; // init somewhere
public MyInterface getMi() {
return mi;
}
//test cases for the implementation MyInterface1Impl
}