web-dev-qa-db-ja.com

TestInitializeおよびTestCleanupでマークされたクラスは実行されていません

私はこれに苦労してきましたが、それが誰かの助けになることを願っています。

MsTestを使用して単体テストを作成しているときに、各テストで同じコードを繰り返していて、いくつかの便利な属性(TestInitializeTestCleanupClassInitialize、およびClassCleanup)。

おそらく、これらの属性の1つでメソッドをマークすると、自動的に実行されます(各テストの前、各テストの後、すべてのテストの前、およびすべてのテストの後に)。イライラして、これは起こらず、私のテストは失敗しました。 TestMethod属性でマークされたクラスからこれらのメソッドを直接呼び出すと、テストは成功しました。彼らが自分で実行していないことは明らかでした。

ここに私が使っていたサンプルコードがあります:

[TestInitialize()]
private void Setup()
{
    _factory = new Factory();
    _factory.Start();
}

なぜこれが実行されないのですか?

40
Stefan de Kok

秘Theは、これらのメソッドをpublicにすることです:

[TestInitialize()]
public void Setup()
{
    _factory = new Factory();
    _factory.Start();
}

privateの場合、実行されません。

100
Stefan de Kok

TestInitializeとTestCleanupは、各テストの前後ではなく、すべてのテストの前後に実行されます。

それは間違っています。たとえば、次のリンクを参照してください。 http://social.msdn.Microsoft.com/Forums/en-US/vststest/thread/85fb6549-cbaa-4dbf-bc3c-ddf1e4651bcf

MSDNもご覧ください。

http://msdn.Microsoft.com/en-us/library/Microsoft.visualstudio.testtools.unittesting.classinitializeattribute.aspx

サンプルコードは、TestInitialize、ClassInitialize、およびAssemblyInitializeの使用方法を示しています。

10
Stefan de Kok

また、問題が発生しました-メソッドの呼び出し方法の誤解により、これで解決しました:TestInitializeおよびTestCleanupメソッドを含むクラスからテストを継承します。

1
Nadine