我試圖寫一些廣泛使用的接口測試合同:爪哇 - 合同測試
線沿線的:
public abstract class MyInterfaceContractTest extends TestCase {
private MyInterface _toTest;
public void setUp(){
_toTest = getTestableImplementation();
}
protected abstract MyInterface getTestableImplementation();
public void testContract(){
}
}
......還有......
public class MyInterfaceImplementationTest extends MyInterfaceContractTest {
protected MyInterface getTestableImplementation(){
return new MyInterfaceImplementation(...);
}
}
但是,我希望能夠測試MyInterfaceImplementation
的多個實例。在我的用例中,這是一個包含數據集合的不可變對象(訪問器按照接口MyInterface
指定),它可能爲空,或者有少量數據,甚至有大量數據。
所以問題是,我如何測試我的實現的多個實例?
目前,我必須初始化實現以將其傳遞到抽象合約測試中。一種方法是爲每個實現提供多個測試類,其中每個測試類都測試該實現的特定實例 - 但這似乎有點龐大而且難以跟蹤。
FWIW,我使用JUnit 3
JUnit 3是古老的。爲什麼不使用JUnit 4? –
@DonRoby - 這會對解決我的問題有所幫助嗎?我正在使用JUnit 3,因爲這是我們的單元測試當前寫入的內容,並且從未優先升級到JUnit 4. – amaidment
http://junit.sourceforge.net/javadoc/org/junit/runners/Parameterized。 html可能會有用。 –