私はこれに苦労してきましたが、それが誰かの助けになることを願っています。
MsTestを使用して単体テストを作成しているときに、各テストで同じコードを繰り返していて、いくつかの便利な属性(TestInitialize
、TestCleanup
、ClassInitialize
、およびClassCleanup
)。
おそらく、これらの属性の1つでメソッドをマークすると、自動的に実行されます(各テストの前、各テストの後、すべてのテストの前、およびすべてのテストの後に)。イライラして、これは起こらず、私のテストは失敗しました。 TestMethod
属性でマークされたクラスからこれらのメソッドを直接呼び出すと、テストは成功しました。彼らが自分で実行していないことは明らかでした。
ここに私が使っていたサンプルコードがあります:
[TestInitialize()]
private void Setup()
{
_factory = new Factory();
_factory.Start();
}
なぜこれが実行されないのですか?
秘Theは、これらのメソッドをpublic
にすることです:
[TestInitialize()]
public void Setup()
{
_factory = new Factory();
_factory.Start();
}
private
の場合、実行されません。
TestInitializeとTestCleanupは、各テストの前後ではなく、すべてのテストの前後に実行されます。
それは間違っています。たとえば、次のリンクを参照してください。 http://social.msdn.Microsoft.com/Forums/en-US/vststest/thread/85fb6549-cbaa-4dbf-bc3c-ddf1e4651bcf
MSDNもご覧ください。
サンプルコードは、TestInitialize、ClassInitialize、およびAssemblyInitializeの使用方法を示しています。
また、問題が発生しました-メソッドの呼び出し方法の誤解により、これで解決しました:TestInitializeおよびTestCleanupメソッドを含むクラスからテストを継承します。