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
     }
}

Понятия не имею почему, но так оно и казалось. Это твой случай?

ОБНОВЛЕНИЕ: Теперь я посмотрел на скриншот, так что это не ваш случай:)

Другие вопросы по тегам