1. ホーム
  2. c#

[解決済み] Visual Studio のユニットテストで、すべてのテストに対して TestInitialize が実行されるのはなぜですか?

2022-04-23 11:16:44

質問

Visual Studio 2010 Beta 2を使用しています。私は、1つの [TestClass] があり、その中に [TestInitialize] , [TestCleanup] といくつかの [TestMethods] .

テストメソッドが実行されるたびに、initialize と cleanup メソッドも実行されます!

という印象を持ちました。 [TestInitialize] &です。 [TestCleanup] は、ローカルテストの実行ごとに、一度だけ実行する必要があります。

これは正しいですか?そうでない場合、これを行うにはどのような方法が適切ですか?

どのように解決するのですか?

TestInitializeTestCleanup は各テストの前後に実行されます。これは、テストが結合されていないことを確認するためです。

すべてのテストの前後でメソッドを実行したい場合は、関連するメソッドを ClassInitializeClassCleanup 属性があります。

Visual Studioで自動生成されたテストファイルからの関連情報です。

テストを書く際に、以下の追加属性を使用することができます。

// Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext) { }

// Use ClassCleanup to run code after all tests in a class have run
[ClassCleanup()]
public static void MyClassCleanup() { }

// Use TestInitialize to run code before running each test 
[TestInitialize()]
public void MyTestInitialize() { }

// Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup() { }