我的项目有一些单元测试。它们都依赖于一些我无法控制的外部服务。这项服务经常失败(召回Twitter大约2008年)。目前,如果服务已关闭,则测试将失败,并且不会构建持续集成服务器。我很反感。我想忽略依赖于此设置的测试,并打印警告。
[BeforeScenario]
try
{
connect(server)
}
catch (Exception x)
{
throw new Exception(String.Format("Failed to connect to server {0}", server), x);
}
我该怎么做?我今天碰巧正在使用SpecFlow,但我也想知道如何从NUnit中做到这一点。
以下是我目前的情况。没关系。测试被忽略,但构建仍然失败。
[BeforeScenario]
try
{
connect(server)
}
catch (Exception x)
{
throw new SpecFlowCancelTests(String.Format("Failed to connect to server {0}", server), x);
}
答案 0 :(得分:3)
您可以使用Assert.Inconclusive("message")或Assert.Ignore()实用程序方法:
Assert.Inconclusive方法表明测试不可能 完成了可用的数据。它应该在情况下使用 其他具有不同数据的运行可能会运行完成,其中 成功或失败的结果。
Assert.Ignore方法为您提供动态的功能 导致在运行时忽略测试或套件。它可能会被称为 测试,设置或夹具设置方法。我们建议您使用它 仅在个别情况下。提供类别设施以供更多 广泛包含或排除测试,或者您可以选择简单 将在不同场合运行的测试分成不同的组件。