2017-03-29 10 views
1

DataAccessRepository(エンティティフレームワークを使用)クラスのテストケースを作成しています。このクラスはコンストラクタで2つの引数をとります。 1)接続オブジェクト 2)Automapperオブジェクト今xUnit 2.xのテストクラスで複数のcollectionfixtureを使用

、私は私のテストクラスでDatabaseFixtureを渡すためのxUnitでcollectionFixtureを使用していますが、私は、同じテストクラスに同様AutoMapperフィクスチャを渡す必要があります。 2つのコレクションを1つずつ追加しようとしましたが、有効ではありません。誰かがxunitのテストクラスで複数のFixtureCollectionを使用する方法についていくつかの光を投げてください。

次のように私のユニットテストクラスが見えると私はクラスの2つの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

コレクションを1つ用意する必要がありますコレクションは二つの異なる 'ICollectionFixture 'の –

+1

を提供します。私は単一のコレクションコンストラクタで両方のフィクスチャのオブジェクトを提案して作成した方法を行いました。出来た。ありがとう。 – user2225263

答えて

1

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

単一のテストクラスを参照してください。 Test Collection(属性にこのような制約が存在するのはなぜですか)にしかありません。

解決策は、そのようなコレクション内のテストがICollectionFixture<X>を介してアクセスを制御する必要がある2つのフィクスチャを宣言する単一の「仮想」テストコレクションを宣言することです。

これが実行されると、必要に応じてTest Class ctorにFixtureインスタンスが提供されます。

(テストクラスレベルでを使用して、コレクション以外のものを宣言することもできますが[そのようなフィクスチャは、テストコレクションレベルのものとは対照的に、そのテストクラスでのテストの実行ごとにスピンアップ/これは実行全体で1回だけアップ/ダウンされ、コレクション内のすべてのテストクラスに渡されます)

関連する問題