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

标签 xunit xunit.net

我正在为我的 DataAccessRepository(使用 Entity Framework )类编写测试用例。此类在构造函数中采用两个参数。
1)连接对象
2) Automapper 对象

现在,我在 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);

        }
 }`

最佳答案

https://xunit.net/docs/shared-context
一个测试类只能在一个测试集合中(这就是为什么对属性有这样的约束)。
解决方案是声明一个“虚拟”测试集合,它声明了这样一个集合中的测试应该通过 ICollectionFixture<X> 控制访问的两个夹具。 s。
当这到位时,测试类构造器会根据需要配备任何夹具实例。
(您也可以在测试类级别使用 IClassFixture 来声明集合之外的内容[但此类夹具将在该测试类中每次执行测试时向上/向下旋转],而不是在测试集合级别在整个运行过程中仅向上/向下旋转一次,并在轮到集合中的所有测试类访问集合装置时传递给他们])

关于xunit - 在 xUnit 2.x 中的我的测试类上使用多个 collectionfixture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43082094/

相关文章:

c# Xunit,Assert.Throws 在引发预期异常时失败

xunit - opencover + xunit 没有结果

nunit - 使用 MemberData 将 xUnit 测试用例转换为 nUnit

c# - Xunit 中类似于 Visual studio 测试中的 TestContext 的属性是什么?

c# - 具有参数化单元测试的 .NET 测试框架,每个组合都显示红色/绿色?

visual-studio-2015 - Visual Studio 2015 测试资源管理器看不到 XUnit dnx 特征

c# - xUnit 非静态成员数据

c# - 不同的模拟对象来比较单元测试中的对象

asp.net - 使用 DI DbContext 和使用 LINQ 的模型对 Controller 进行单元测试 - EF Core 2

unit-testing - ExpectedException xunit .net core