C# 是否可以运行仅在单元测试通过时执行的方法



我已经构建了一个集成测试作为Visual Studio 2017测试项目。此项目将作为 VSTS 生成步骤运行。

具体来说,我正在测试数据库(PostgreSQL)配置应用程序的正确功能。

这意味着此单元测试将使用预配 API 在数据库服务器中创建数据库和数据库用户,并且测试还将验证数据库架构、表和列的正确结构。

这会导致包含多个数据库的数据库服务器仅通过集成测试构造运行。

计划任何失败的数据库将保留在服务器中,以便可以剖析所有错误,但我们不需要保留成功测试的数据库。

我目前的问题是,由于测试是在单元测试项目中,测试方法运行其断言,并且已完成。

当我的集成测试以 100% 通过时,如何触发脚本从 Postgres 服务器中删除数据库?

我只有该怎么做的想法。是否在测试步骤之后运行其他 VSTS 生成步骤以运行脚本?还是我让我的测试方法返回一个布尔值,并在项目结束时以运行脚本的方法收集

布尔值?

从 QA 和集成测试的角度来看,在 NUnit(和其他)中,有在每次测试之前和之后执行的设置和拆卸步骤。您可以在拆卸步骤中放入一些内容以确认测试通过,如果是这样,则调用脚本来删除表。

[TearDown]
public void CleanUp()
{
if (TestContext.CurrentContext.Result.Outcome.ToString().Equals("Passed")
{
// Run Script to Drop Table
// Confirm Table Dropped
// Close Driver
driver.Close();
Console.WriteLine("Table Drop Confirmed and Driver Closed.");
} else {
Console.WriteLine("Test did not pass, Table not dropped.");
driver.Close();
Console.WriteLine("Driver Closed.");
}
}

这可能会解决您的问题: NUnit - 是否可以在拆解中检查测试是否成功?

NUnit 提供了一种访问其测试运行结果的方法,因此您可以检查成功/失败,然后执行清理或跳过它。

在我使用的测试框架中,断言通过在失败时抛出异常来工作。测试的执行在此时结束。 如果在测试结束时删除表,则在断言之后,如果测试失败,它将不会运行(因为执行将在失败的断言处停止),但如果测试通过,它将运行。

最新更新