玩具示例代码:
public abstract class testBase
{
public testBase()
{
//Some common test setup code, which will initialize ManagerClass
}
}
public class someTests: testBase
{
public someTests()
{
//someTests-specific constructor code.
}
[Theory]
[PropertyData("MyTestData")]
public void test1(Foo foo)
{
//Use foo to do a test
}
public static IEnumerable<object[]> MyTestData
{
get
{
yield return new object[] { ManagerClass.CreateANewFoo(1) };
yield return new object[] { ManagerClass.CreateANewFoo(42) };
}
}
}
在上面的例子中,如果我专门运行test1(我正在使用Resharper,但是当我使用xUnit GUI时也会出现问题)我的测试失败了,因为似乎testBase和someTests构造函数都没有被执行。因此,对ManagerClass.CreateANewFoo()的调用抛出NullReference。
如果我在someTests或任何其他单独的测试中运行所有测试,构造函数将按预期执行,并且测试以预期的方式进行。将test1标记为不同的唯一因素是它正在使用PropertyData属性。
为什么会发生这种情况/我做错了什么?
答案 0 :(得分:1)
我们尝试使用xUnit.net 1.5 Beta重现这一点,但不能。