我建议您创建一个静态标志,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
从那时起,引用并不会真正产生多大影响。它只包含要运行的最后一个测试的状态,而不是类中所有测试的组合结果。