在xUnit 2.x中的测试类上使用多个collectionfixture

use*_*263 5 xunit xunit.net

我正在为DataAccessRepository类(使用实体框架)类编写测试用例。此类在构造函数中带有两个参数。1)连接对象2)自动映射器对象

现在,我在xunit中使用collectionFixture在测试类中传递DatabaseFixture,但是我还需要将AutoMapper Fixture传递给同一测试类。我尝试添加两个集合,一个接一个,但是无效。有人可以介绍一下如何在xunit的测试类上使用多个FixtureCollection吗?

我的单元测试类如下所示,并且由于无法在该类上使用两个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);

        }
 }`
Run Code Online (Sandbox Code Playgroud)

Rub*_*ink 8

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

一个测试类只能在一个测试集合中(这就是为什么对属性有这样的约束)。

解决方案是声明一个单一的“虚拟”测试集合,它声明这样一个集合中的测试应该通过ICollectionFixture<X>s控制访问的两个固定装置。

当这到位时,测试类构造器会根据需要配备任何夹具实例。

(您也可以IClassFixture在测试类级别使用 an来声明集合之外的内容[但此类夹具将在该测试类中每次执行测试时向上/向下旋转],而不是在测试集合级别上将被加速/down 在整个运行过程中只执行一次,并在轮到集合中的所有测试类访问集合夹具时传递给他们])

  • 我的问题是我有多个数据库,每个数据库都有多个固定装置。我还只需要初始化我的映射器一次。 (2认同)