Я проверяю 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, но на нашем сервере сборки (который использует TeamCity) UnitTestOutcome
всегда равно Unknown
, хотя TeamCity сообщает о них как о пройденных.
документация на MSDN не очень полезный. Что может привести к тому, что это значение будет установлено на Unknown
?