5
使用xUnit.net什麼是乾淨的(可讀/可理解的和可維護)的方式來重複使用相同的測試用於同一接口的多個實現?重複使用相同的測試用於不同的實現
我測試的行爲和斷言部分都是一樣的(因爲接口的所有實現都應該有同樣的表現)。只是SUT對於每次測試運行都是不同的,對於某些特定測試排列部分略有不同。
例如,我有以下接口的多個實現(MemoryRepository
,FileReposity
...)。
interface IRepository
{
object GetById(string id);
void Set(string id, object value);
}
現在我的測試中都應該保證所有實現相同的行爲:
// all implementations of IRepository must behave like this
// so do this test for all implementations
[Fact]
public void GetRetrievesWhatWasPut()
{
IRepository sut = new MemoryRepository();
sut.Set("key", 10);
var result = sut.Get("key");
result.Should().Be(10);
}
我不太瞭解如何使用通用的測試類,幫助我改變SUT。你的例子不會改變SUT。 – bitbonk
但它可以;請求'T'而不是'IComparable'... –
我認爲可能存在某種誤解,我用一個例子更新了我的問題。我看到我可以如何使用'[Theory]'和'DataAttribute'來數據驅動SUT,但我沒有看到使用泛型的好處。 – bitbonk