我正在检查TestContext.CurrentTestOutcome
我的TestCleanup
方法,以便在测试未通过时执行操作(在这种情况下,测试使用 Selenium 来运行网站,如果测试未通过,我将保存屏幕截图)。
private static TestContext _testContext;
private static IWebDriver _driver;
[ClassInitialize]
public static void SetupTests(TestContext testContext)
{
_testContext = testContext;
_driver = new FirefoxDriver();
}
[TestCleanup]
public void TeardownTest()
{
if (_testContext.CurrentTestOutcome != UnitTestOutcome.Passed)
{
var fileName = Path.Combine(
Environment.CurrentDirectory,
string.Format("{0}.{1}.gif", _testContext.FullyQualifiedTestClassName, _testContext.TestName));
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(fileName, ImageFormat.Gif);
Console.WriteLine("Test outcome was {0}, saved image of page to '{1}'", _testContext.CurrentTestOutcome, fileName);
}
}
这在使用 ReSharper 的本地开发 PC 上运行时效果很好,但在我们的构建服务器(使用 TeamCity)UnitTestOutcome
上总是Unknown
,尽管 TeamCity 报告它们已通过。
MSDN上的文档不是很有帮助。什么可能导致此值设置为Unknown
?