内部 class 可以访问外部 class 数据的 xUnit 测试套件

xUnit test suite where inner class can access outer class' data

我有一些大型测试套件,所以我将它们分成 inner/nested class 个部分。这也使 VSCode 测试浏览器中的结果更加友好。

但是当在外部 class:

中定义了公共夹具数据时,它就不能正常工作了
public class UserTests
{
  // common fixture data used by all inner classes
  public UserTests() => _fake = new Fake();
  private readonly Fake _fake;

  public class AddUser {

    public AddUser(UserTests o) => _outer = o;
    private readonly UserTests _outer;

    [Fact]
    public void test_foo() {
      // use _outer._fake
    }

    [Fact]
    public void test_bar() {
      // use _base._fake
    }
  }

  public class FindUser 
  {
    // ...similar to above
  }

  public class DeleteUser {
    // ...similar to above
  }
}

但是我得到这个错误:

The following constructor parameters did not have matching fixture data: UserTests o

所以上面的设置可能不好。

有什么好的设置可以让我嵌套 classes 并在外部 class 中创建夹具数据,以便所有内部 classes 都可以使用它?

正如@Fabio 在上面的评论中所解释的,测试运行器不知道如何实例化测试 classes。

所以诀窍是在内部 class' 构造函数中调用 _outer = new UserTests()