在 xUnit 2.x 中对我的测试 class 使用多个 collectionfixture

Use multiple collectionfixture on my test class in xUnit 2.x

我正在为我的 DataAccessRepository 编写测试用例(使用 entity framework)class。这个 class 在构造函数中有两个参数。 1)连接对象 2) 自动映射器对象

现在,我在 xunit 中使用 collectionFixture 以在我的测试中通过 DatabaseFixture class,但我还需要通过 AutoMapper Fixture 以通过相同的测试 class。我尝试添加两个集合,一个接一个,但它无效。有人可以阐明如何在 xunit 中的测试中使用多个 FixtureCollection class。

我的单元测试 class 如下所示,它抛出错误,因为我无法在 class、

上使用两个 CollectionFixture 属性

`

[Collection(Traits.DatabaseFixtureCollection)]
    [Collection(Traits.AutomapperFixtureCollection)]
    public class MyAssessmentRepositoryTests
    {
        private readonly IMyAssessmentsRepository _Repo;
        public MyAssessmentRepositoryTests(DatabaseFixture dbFixture,AutomapperFixture amFixture)             
        {
            this._Repo = new MyAssessmentRepository(dbFixture.IcmDbContext,amFixture.Mapper);

        }
 }`

https://xunit.net/docs/shared-context

单个测试class只能在一个测试Collection(这就是为什么在Attribute上有这样的约束)

解决方案是声明单个 'virtual' 测试 Collection,它声明在这样的 collection 中的测试应该通过 [=10= 控制访问的两个固定装置]s.

完成后,测试 Class 构造器会根据需要配备任何 Fixture 实例。

(您也可以在测试 Class 级别使用 IClassFixture 来声明 Collection 之外的东西 [但是这样的 Fixture 将被旋转 up/down]在该测试 Class 中执行测试,而不是在测试 Collection 级别执行测试,后者将被旋转 up/down 整个 运行 一次并交给所有测试 Classes 在 collection 轮到他们访问 Collection 夹具])