如何測試(抽象)類中接口方法實現的行爲,而不必將測試複製到每個類?單元測試接口的實現,怎麼做?
我有(抽象)類實現多個接口。我知道每個接口應該如何表現,我在測試方法中定義了這一點,以便我不必爲接口的每個實現手動重複這些測試。
我可以爲每個接口創建一個抽象類與測試,並有一個抽象方法CreateSUT()
創建具體類的新實例。但是之後我不得不爲每個類實現的接口創建一個新的類,因爲C#不支持多繼承。有一個更好的方法嗎?
另請注意,我也想測試在具有幾個非抽象子類的抽象類中實現的接口,這會使事情稍微複雜化。
這個問題是不是約我是否應該單元測試我的接口實現。意見不同,我決定這樣做,因爲我知道接口實現應該如何表現(從不返回空值,返回只讀集合等),並將這些測試放在一起使我更容易測試他們的實現,但是可能有很多。
那麼有三個選項1.不要測試界面 - 你拒絕。 2.測試每個派生類。 3.只測試一個派生類。 – gdoron 2012-03-22 22:09:12
我不太明白你在「我可以創建...」段落中所說的話。您不必在界面中包含工廠方法。我也不明白爲什麼你遇到了「缺乏多重繼承」的問題。你仍然可以有一個類實現幾個接口,這似乎是你的情況。 – Tormod 2012-03-22 22:59:09