1

我有一些大型测试套件,所以我将它们分成内部/嵌套类。这也使得 VSCode 测试资源管理器中的结果更加友好。

但是当外部类中定义了通用的夹具数据时,它就不能很好地工作:

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
  }
}

但我得到这个错误:

以下构造函数参数没有匹配的夹具数据:UserTests o

所以也许上面是一个糟糕的设置。

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

4

1 回答 1

1

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

所以诀窍是调用_outer = new UserTests()内部类的构造函数。

于 2021-08-22T04:38:53.147 回答