単体テストと継承

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();

}

}






このアプローチの利点: 短所: 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()

{

//...

}

}






新しい顧客固有のメソッドを追加し、メソッドのオーバーライドを基本クラスから削除しました。 その機能は完全に私たちに合っています。 これから得たもの: それは残念ですが、致命的ではありません。 標準のMSTestユーティリティが私たちの問題のすべて、またはほとんどすべてを解決します。 短所:



All Articles