からアクセスできる静的フラグを作成しMyClassCleanup
、エラーが発生したときにテストのクリーンアップ中に設定することをお勧めします。クラスで次のようなもの:
[TestClass]
public class MyTests {
static bool _testFailed;
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
// Create database!
_testFailed = false;
}
[ClassCleanup()]
public static void MyClassCleanup()
{
if(_testFailed == false) {
// Remove database IF CurrentTestOutcome == UnitTestOutcome.Passed
}
}
[TestCleanup()]
public void MyTestCleanup() {
if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) {
_testFailed = true;
}
}
public TestContext TestContext { get; set; }
}
私の理解では、あなたのクラスのクリーンアップでは、 を参照してCurrentTestOutcome
もあまり効果がないので、上記のアプローチを提案しています。クラス内のすべてのテストの結果を組み合わせたものではなく、最後に実行したテストの状態のみが含まれます。