我有一組基測試用於測試接口的多個實現。我建模的方式是創建一個帶有[Ignore]屬性的基礎文本夾具。測試夾具的繼承和被忽略的基礎測試夾具
[TestFixture]
[Ignore]
public class BaseTests
{
// Use your imagination for the actual name
public virtual ITestableThing GetConcrete()
{
return null;
}
// All of my unit tests here
}
然後我寫的每一個接口實現一個子類:
public class ConcreteThingTests : BaseTests
{
public override ITestableThing GetConcrete()
{
return new ConcreteThing();
}
}
這工作得很好,因爲我擁有所有在一個地方所有實現的測試,和子類只需指定實現。
問題是我必須將[Ignore]屬性放在基類上,否則NUnit會嘗試運行測試(並失敗)。由於這個原因,我的測試結果總是被一系列Ignored測試混淆,儘管這不是什麼大不了的事情,但我認爲可能會有更好的模式避免忽略測試。
那麼,我在執行測試夾具繼承錯誤嗎?
我遇到的問題是它將基類與測試類緊密結合在一起。有人想要創建一個新的實現並根據規範對其進行測試,不需要修改基類以添加屬性或更改方法。 –