我正在为我的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);
}
}`
最佳答案 见 https://xunit.github.io/docs/shared-context.html
单个测试类只能在一个测试集合中(这就是为什么对属性有这样的约束).
解决方案是声明单个“虚拟”测试集合,该集合声明两个装置,这样的集合中的测试应该通过ICollectionFixture< X> s控制访问.
当这个到位时,Test Class ctor会根据需要提供任何Fixture实例.
(您也可以在Test Class级别使用IClassFixture来声明Collection之外的东西[但是这样的Fixtures将在该Test Class中执行测试时向上/向下旋转]而不是在测试集合级别进行旋转上/下只是整个运行的一次,并交给集合中的所有测试类,因为他们轮流访问集合夹具])