2017-04-11 105 views
1

我正在開發一個具有多個後端的數據庫DSL。爲了避免強制不必要的依賴於用戶,DSL將被拆分爲一個「核心」包,其中包含DSL本身,併爲每個後端分配一個包。後端包都依賴於核心包,因爲它定義了每個後端需要提供的API。將庫分割成多個包

現在,我想爲我的DSL添加一個測試套件。由於大多數被測試的功能都存在於核心軟件包中,這就是我想要放置測試套件的地方。但是,爲了實際運行運行任何測試,至少需要一個後端。這意味着測試套件依賴於核心軟件包和後端軟件包,但後端軟件包又取決於核心軟件包,從而產生循環依賴。

顯而易見的解決方案是爲僅依賴核心和後端的測試創建另一個包,或者將後端API移動到核心和後端包可以依賴的其自己的包中(允許後端不依賴核心包)。但是,如果可能的話,我想保持包裝結構不變,並將測試套件作爲核心包的一部分。

這可能嗎?

回答

3

一個可能的解決方案,你可以保留包的佈局,將有一個由核心包提供的測試套件模塊,例如,在YourDSLLib.Tests中,以任何滿足定義的API的通用方式實施通用測試。

然後,您可以爲每個後端添加一個非常簡單的測試,它只調用YourDSLLib.Tests中的測試功能。

一個優點是可以維護常見的測試代碼,但也可以根據需要定製每個後端的測試。