0

玩具示例代码:

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 属性。

任何想法为什么会发生这种情况/我做错了什么?

4

1 回答 1

1

我们试图用 xUnit.net 1.5 Beta 重现这一点,但不能。

于 2009-08-15T16:54:16.197 回答