单独运行xUnit Theory时,测试类构造函数不执行?

时间:2009-08-12 16:02:14

标签: unit-testing xunit.net

玩具示例代码:

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

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

1 个答案:

答案 0 :(得分:1)

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