假設我有一個接口和兩個類都實現它。所以我們有接口I,類A和B.對於這兩個類,我們需要使用JUnit4測試相同的實現函數doSomething()。有一些依賴關係,所以我們使用Mockito。示例測試如下所示:用1個測試測試多個類
@Mock private dependantClass d;
@Test
public void test() {
A.doSomething();
verify(d).expectedBehavior();
}
我已經爲A(4測試)編寫了測試套件,沒有問題。但是,現在我必須重構測試套件,以便可以在A和B對象上執行相同的測試類。爲此,我應該使用並行類層次結構。
這讓我難倒了。我試過使用@Parameters註解,但是這給我錯誤,我有太多的輸入參數。我試過做一個ATest和BTest擴展的超級測試類,但我猜測我沒有做正確的,因爲我得到了空指針異常。
實際上覆制所有的測試用例,只是將A更改爲B通過了所有的測試,也就是說這兩個類都是相同的。我意識到這聽起來像錯誤的設計,說實話,它可能是。但是,我沒有可能改變代碼,我只需要測試它。
我只是在做錯事嗎?我應該如何實現這一點?
請顯示您如何嘗試參數化您的測試。這是正確的做法,你可能錯過了一些小事。 – dasblinkenlight
我想知道爲什麼[參數化測試](https://github.com/junit-team/junit/wiki/Parameterized-tests)在你的情況下失敗。你可以發佈一個片段在你的嘗試嗎? –
這是@Parameters的一個相當常見的用例,所以您可能需要顯示該嘗試的一些細節。 「太多的輸入參數」可能是一個簡單的錯誤(如與構造函數的簽名不匹配),如果您發佈該代碼,可能會被診斷出來。 – sprinter