2012-06-21 84 views
2

我的项目有一些单元测试。他们都依赖于一些我无法控制的外部服务。这项服务经常下降(回顾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); 
} 

回答

2

您可以使用Assert.Inconclusive("message")Assert.Ignore()实用方法:

的Assert.Inconclusive方法表示测试不能 完成了可用的数据。应该在 的情况下使用,其中使用不同数据运行的另一个数据可能会运行到完成状态, 或者成功或失败结果。

Assert.Ignore方法为您提供动态的能力 导致测试或套件在运行时被忽略。可以在 测试,设置或夹具设置方法中调用。我们建议您仅在个别情况下使用此 。该类别设施提供更多 大量纳入或排除测试,或者您可以选择仅将 在不同场合下运行的测试划分为不同的程序集。

相关链接: - What is the Inconclusive Test Condition?

+0

感谢,这正是我想要的! –