2011-12-21 11 views
4

次の問題があります。私は私のユニットテストプロジェクトで参照している外国asseblyに実装されているいくつかのユニットテストを持っています。単体テストは抽象クラスとして実装されており、単体テストプロジェクトで継承されている(そしてそれが "活性化"されている)必要があります。MSTest:他のアセンブリにあるクラスから継承したテストメソッドが見つかりません

プロジェクトでこれらのクラスを継承すると、テストメソッドが表示されます。しかし、何らかの理由でVisual Studioによって実行されていません。私がGalio Icarusでテストを実行すると、 "Test ... can not be found"というメッセージが表示されます。

抽象テストクラスをプロジェクトにコピーすると、テストが見つかって正しく実行されます。

ユニットテストを実装するメソッドにいくつかの制限があるかどうか知っていますか?テスト実行はTestClassAttribute、TestMethodAttributeなどを探すだけでなく、テスト実装が同じアセンブリで実行されているかどうかをチェックするロジックも備えています。私は抽象クラスを継承し、テストが見えると「アクティブ」であることを期待私のテストプロジェクトで

[TestClass] 
public abstract class GeneralGridTestsBase<T> where T : GridParamsBase, new() 
{ 
    [TestMethod] 
    public virtual void GetCellSetItems_Unique_CellSetKeys() 
    { 
     // Test implementation 
    } 

    // Other tests implemented here 
} 

抽象クラスの外国asseblyでのテスト実装を持つ:

実装では、このようになります。

[TestClass] 
public class RetailInputGeneralTests : GeneralGridTestsBase<RetailInputParams> 
{ } 
+0

外国アセンブリ:それはuneccessaryようだが、私はそれだけでMSTestをフレームワークの特異性だと思いますか? –

+0

バイナリとして参照されています(DLLのみが利用可能です)。 – llasarov

答えて

3

私はこれを複製し、仮想テストメソッドをオーバーライドし、基本実装を呼び出すことによって、それを修正することができました。これは、バイナリやプロジェクト参照で、

[TestClass] 
public class RetailInputGeneralTests : GeneralGridTestsBase<RetailInputParams> 
{ 
    [TestMethod] 
    public override void GetCellSetItems_Unique_CellSetKeys() 
    { 
     base.GetCellSetItems_Unique_CellSetKeys() 
    } 
} 
+0

TestClass属性がクラスに適用されます。 – llasarov

+0

私はこれを複製して、あなたに戻ってくるつもりです。 –

+0

Mylesに事前に感謝します! – llasarov

関連する問題