我有两个类,它们是同一个接口的不同实现。 还有一组相当大且复杂的单元测试来测试实现的正确性。
我正在寻找针对两个或更多类运行相同测试集的最佳方法。不幸的是,由于外部限制,我只能使用JUnit4。因此,花哨的新奇测试框架对我来说不起作用。
你可以建议你最喜欢这样做的方法,而不是盲目地将测试复制到单独的文件中,并导致保持两个文件同步的维护麻烦。
澄清:这两个类必须完全独立,目标是测试两个类对完全相同的输入产生完全相同的输出。这些类被写入公共接口。因此,如何针对同一接口的两个不同实现运行相同的测试用例是一个问题。
答案 0 :(得分:3)
这个怎么样:
public abstract class TestBase {
private TheInterface unitToTest;
protected abstract TheInterface getInterfaceImplementation();
@Before
public void setImplementation() {
unitToTest = getInterfaceImplementation();
}
@Test
public void test1 {
//excercise and assert unitToTest
}
}
public class ImplementationOneTest extends TestBase {
protected TheInterface getInterfaceImplementation() {
return new ImplementationOne();
}
}
public class ImplementationTwoTest extends TestBase {
protected TheInterface getInterfaceImplementation() {
return new ImplementationTwo();
}
}
etc.
答案 1 :(得分:0)
您可以创建基础测试类,其中构造函数接收您的接口(以及内部的测试方法)。以及每个将一些接口实现传递给super()
的具体类。
答案 2 :(得分:0)
如果没有通用的实现细节,那么每个实现都必须有不同的单元测试。