我试图编写一个测试,该测试检查方法在派生的类中没有错误地覆盖方法。所以我尝试了以下内容。但是,无论我尝试什么,它似乎都不能"注入"我的对象。
[Theory]
[xxxData(new BaseClass())]
[xxxData(new DerivedClass())]
public void Test_Stuff(BaseClass obj)
{
// ...
}
假设我了解您的目标,我看到了两种方法:
- 使用
InlineDataAttribute
和通过类型 -
使用
MemberDataAttribute
(xunit.net v1中的propertydata)[Theory] [InlineData(typeof(BaseClass))] [InlineData(typeof(DerivedClass))] public void Test_Stuff(Type type/*BaseClass obj*/) { var obj = Activator.CreateInstance(type) as BaseClass; CheckConstrain(obj); } [Theory] [MemberData("GetObjects")] public void Test_Stuff2(BaseClass obj) { CheckConstrain(obj); } public static IEnumerable<object[]> GetObjects { get { return new[] { new object[] { new BaseClass() }, new object[] { new DerivedClass() } }; } } private static void CheckConstrain(BaseClass baseClass) { Assert.True(baseClass.Foo() <= 1); }
另请参见此相关答案将复杂参数传递给[理论]