私の推測では、単体テストの現在のセマンティクスには、実際にメソッドを呼び出すMyTest()
ことが含まれます。つまり、メソッドがある場合、それが呼び出されます。私の質問はこれです: テストの実行方法のパイプラインを何らかの方法で変更することは可能ですか (できればテスト ランナーを再コンパイルせずに)、たとえば、メソッドを直接呼び出す代わりに、私が提供するラッパー (つまりMyWrapper(MyTest)
) を介して呼び出されるようにすることはできますか?
ありがとう。
私の推測では、単体テストの現在のセマンティクスには、実際にメソッドを呼び出すMyTest()
ことが含まれます。つまり、メソッドがある場合、それが呼び出されます。私の質問はこれです: テストの実行方法のパイプラインを何らかの方法で変更することは可能ですか (できればテスト ランナーを再コンパイルせずに)、たとえば、メソッドを直接呼び出す代わりに、私が提供するラッパー (つまりMyWrapper(MyTest)
) を介して呼び出されるようにすることはできますか?
ありがとう。
MbUnit を使用する場合、カスタム属性を定義することでカスタマイズできるものがたくさんあります。
これを行う最も簡単な方法は、TestDecoratorAttribute のサブクラスを作成し、SetUp、TearDown、または Execute メソッドをオーバーライドして、選択した追加のロジックでそれらをラップすることです。
ただし、より細かい制御が必要な場合は、代わりに TestDecoratorPatternAttribute のサブクラスを作成し、DecorateTest メソッドをロジックでオーバーライドして、追加のテスト アクションまたはテスト インスタンス アクションを追加することができます。
たとえば、MbUnit [Repeat] 属性は、テストの本体実行アクション (テストのすべてのフェーズを実行する) をループといくつかの追加のブックキーピングでラップして、テストを繰り返し実行することによって機能します。
RepeatAttribute のコードは次のとおりです: http://code.google.com/p/mb-unit/source/browse/trunk/v3/src/MbUnit/MbUnit/Framework/RepeatAttribute.cs
それは、単体テスト フレームワークがインターセプトおよび拡張機能をどのように提供するかによって異なります。
ほとんどのフレームワーク (MSTest、NUnit など) では、テストの前後に実行されることが保証されている Setup メソッドと Teardown メソッドを定義できます。
xUnit.NETには、より高度な拡張メカニズムがあり、カスタム属性を定義して、テスト メソッドを装飾し、呼び出し方法を変更することができます。例として、パラメーター化されたテストを定義できる TheoryAttribute があります。
私は MBUnit を知らないので、これらのシナリオをサポートしているかどうかはわかりません。