43

私はこれに苦労してきました。うまくいけば、他の誰かを助けるでしょう。

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

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

私が使用していたサンプルコードは次のとおりです。

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

では、なぜこれが実行されないのでしょうか。

4

3 に答える 3

114

トリックは、これらのメソッドを作成することpublicです:

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

それらが存在する場合、それらはprivate実行されません。

于 2012-09-20T20:52:27.947 に答える
10

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

それは間違っています。たとえば、次のリンクを参照して ください。

MSDN も参照してください

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

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

于 2013-05-21T00:59:37.547 に答える