Nunit - TestContext.CurrentContext.Test не работает
Я использую nunit 2.5.9.10348 и пытаюсь извлечь текущее имя теста в событии TearDown, чтобы я мог присвоить имени файла скриншота имя теста, однако оно всегда равно нулю (см. Прикрепленное изображение). Закрытая переменная _context имеет TestName, однако это бесполезно для меня!
Кто-нибудь имел успех, используя эту новую функциональность TestContext (с 2.5.7).
3 ответа
Из вашего скриншота видно, что _context имеет ключи "TestName" и "Properties". Но TestAdapter ищет ключи "Test.Name" для имени и "Test.Properties" для свойств. Итак, что-то не так с инициализацией TestContext (я думаю, что неверные данные были помещены в Remoting.Messaging.CallContext).
После небольшого исследования (см. Комментарии): тесты NUnit должны запускаться средой NUnit testig для обеспечения доступности Context.
Та же проблема с тестером R#. Просто скачали исходники NUnit и добавили обходной путь в TestAdapter, чтобы он работал с r#
public string Name
{
get
{
return (_context["Test.Name"] ?? _context["TestName"]) as string;
}
}
Я была такая же проблема. Это произошло, когда в методе TearDown я выполнил метод, который фактически должен был сделать демонтаж
[TearDown]
public void CleanUp()
{
TestContext.CurrentContext.Test.FullName; //!=null
someClassInstance.DoTearDown();
}
class SomeClass
{
public void DoTearDown()
{
TestContext.CurrentContext.Test.FullName; //==null
}
}
Понятия не имею почему, но так оно и казалось. Это твой случай?
ОБНОВЛЕНИЕ: Теперь я посмотрел на скриншот, так что это не ваш случай:)