IEquatable<T>
除了 SUTs 类型之外,我有大量模型都实现了,我有几个看起来相似的测试类。测试验证了实现和其他一些常见方面都由被测模型实现。
使用抽象的泛型测试类并没有太大的作用,我放松了对操作符的编译时重载决议,无论如何我必须为每种类型实现一个派生的测试类。
使用该MemberData
属性有助于消除对派生测试类的需求,但运算符的编译时重载决议仍然存在。
是否存在另一种方法,例如InlineData
我在运算符上维护编译时重载分辨率并拥有一个对象集合(无论它们是否是类型)来调用测试方法?
在下面的示例中,我使用MemberData
但必须使用反射来调用==
and!=
运算符,并且测试方法签名不是最佳的,因为它们未使用(仅使用泛型类型参数)。
[Theory]
[MemberData(nameof(GetModelTypes))]
public void MyTest<T>(T _)
where T : class, new()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
// Add any known type customization's...
T t = fixture.Create<T>();
// Implement remaining generic test body.
}
public static IEnumerable<object[]> GetModelTypes() =>
{
new object[] {new ModelA()},
new object[] {new ModelB()},
/* ... */
}
有谁知道一种方法可以让我维护一个对象集合并使用编译时重载解决方案进行测试?