単体テストと継承

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ユーティリティが私たちの問題のすべて、またはほとんどすべてを解決します。短所:


Source: https://habr.com/ru/post/J47752/


All Articles