2017-03-29 2 views
1

DataAccessRepository (엔티티 프레임 워크 사용) 클래스의 테스트 케이스를 작성하고 있습니다. 이 클래스는 생성자에서 두 개의 인수를 취합니다. 1) 연결 개체 2) Automapper 개체 이제xUnit 2.x의 테스트 클래스에 여러 개의 collectionfixture 사용

, 내 테스트 클래스에 DatabaseFixture을 통과 xUnit의에서 collectionFixture를 사용하고 있지만 동일한 테스트 클래스뿐만 아니라 AutoMapper기구를 통과해야합니다. 나는 2 개의 컬렉션을 하나씩 추가하려고했지만 유효하지 않습니다. 누군가가 xunit의 테스트 클래스에서 하나 이상의 FixtureCollection을 사용하는 방법에 대해 알려줄 수 있습니까?

다음과 I 클래스에 두 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); 

     } 
}` 
+0

하나의 컬렉션이 있어야합니다. 컬렉션은 두 가지 다른'ICollectionFixture 's –

+1

을 제공합니다. 내 단일 콜렉션 생성자에서 두 조명기에 대한 객체를 제안하고 생성 한 방식대로 수행했습니다. 그것은 효과가 있었다. 감사. – user2225263

답변

1

참조 https://xunit.github.io/docs/shared-context.html

하나의 테스트 클래스 하나만 테스트 컬렉션에있을 수 있습니다 (이로 인해 속성에 이러한 제한이 있습니다).

해결책은 하나의 '가상'테스트 콜렉션을 선언하는 것입니다.이 테스트 콜렉션은 이러한 콜렉션의 테스트가 ICollectionFixture<X>을 통해 액세스를 제어해야한다는 두 가지 비품을 선언합니다.

필요한 경우 테스트 클래스 매개 변수에 Fixture 인스턴스가 제공됩니다.

(테스트 클래스 수준에서을 사용하여 컬렉션 외부의 항목을 선언 할 수도 있지만 [테스트 도구 모음]의 테스트 실행 수준에서 테스트 컬렉션 수준의 테스트 실행 당 [해당 조명기가 회전/아래로 회전] 전체 실행에 대해 한 번만 위/아래로 회전하여 컬렉션 장비에 액세스 할 때 차례대로 모든 테스트 클래스에 건네집니다.]

관련 문제