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