Visual Studioで単体テストを開発する場合、基本的な胸をテストするために、ある種の基本クラスを作成することがよくあります。 たとえば、次のようなクラスがあります:
[TestClass]
public virtual class PersonTestBase
{
[TestClass]
public virtual class PersonTestBase
{
[テスト方法]
public void GetNameTest()
{
// ...
}
}
およびその継承クラス:
[TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void GetNameTest()
{
base.GetNameTest();
}
}
[TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void GetNameTest()
{
base.GetNameTest();
}
}
このアプローチの利点:
- ビジュアルツールVisual Studio(テストリストエディター)の完全サポート。
- 実装の容易さ。
短所:
- コードの冗長性。
- 相続人の作成は、基本的にコピー&ペーストです。
PersonTestBaseとCustomerTestは同じアセンブリ内になければならないことに注意してください。そうしないと、PersonTestBaseのテストは機能しません。これは単体テストの制限です。 詳細については、msdnを参照してください。 msdnで説明されているメソッドに加えて、次のことができます:BaseTestsとCustomTestsの2つのプロジェクトが作成されます; BaseTestsから必要なファイルがこの方法でCustomTestsプロジェクトに追加されます:Project-> Add Existing Item-> Select required files-> Add As Link。異なるプロジェクトではありますが、コンパイル時には、必要なクラスは同じアセンブリにあります。 ここで、CustomerTestを変更します。
[TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void CustomerTestMethod()
{
//...
}
}
新しい顧客固有のメソッドを追加し、メソッドのオーバーライドを基本クラスから削除しました。 その機能は完全に私たちに合っています。 これから得たもの:
- 実際、クラスには2つのテストメソッドが実装されています。1つは基本クラスから渡され、もう1つは自分で実装しました。
- Visual Studioテストリストエディターは、1つのテトビーハニーしか持っていないと言っています-bashクラスのメソッドは表示されないため、開始されません。
それは残念ですが、致命的ではありません。 標準のMSTestユーティリティが私たちの問題のすべて、またはほとんどすべてを解決します。
短所: