2011-09-14 33 views
1

我有一個接口,存在幾個實現。 我正在爲接口設置一個測試套件。現在我想爲套件中的每個具體實現者運行所有測試類。將測試套件應用於接口的實現

澄清,我有這樣

  • TestSpam.java
  • TestEgg.java
  • TestBacon.java

這是所有測試我的界面IBreakfast的不同勢方面的設置,我會讓他們組織一個名爲TestBreakfast的套件。我希望所有不同的測試都能以特定的方式執行特定的實現,最好是在套件上進行一次。

在測試用例級別,我認爲我可以使用參數運行所有實現,但看起來並不像擴展到套件。而且,當使用參數化時,它看起來像我將不得不硬編碼的感覺可怕的倒退。

關於如何使這項工作的任何想法?

回答

2

在這種情況下,我已經多次落戶到類似以下的模式:

  • 創建一個抽象類測試對於接口的預期功能。
    • 該類應聲明一個抽象工廠方法,該方法返回該接口的一個實例。
    • 所有的測試都應該使用工廠方法返回的實例。
  • 創建一個或多個擴展此抽象類的類(每個實現一個)。
    • 通過返回適當的具體類實現工廠方法。
    • 使用此具體測試類來測試特定於實現的功能。
+0

謝謝,但你會如何去擴展到測試套件?我真的想避免所有測試類的子類。 – keis

+0

澄清:您試圖以編程方式爲每個接口的實現創建包含'TestSuite'實例的父'TestSuite'。你想通過反射來完全找到實現,還是想爲'TestSuite'的構造函數提供一個類名/類實例列表? –

+0

對不起,如果我不清楚,澄清更新了原來的問題。所以不,這不是我在這之後的事。反思與否並不重要,但我認爲通過一個實例會更容易 – keis

相關問題