Подтвердить что ты не робот

Как программно получить доступ к названию теста NUnit?

В каком-то глобальном состоянии я могу получить доступ к текущему тестовому имени?

У меня есть тесты, которые выводят файлы в каталог и читают их обратно. Я бы хотел, чтобы каждый тест создавал директорию для воспроизведения, а затем очищался после себя, и я не хочу подталкивать это имя в ( Я должен сделать его уникальным, а затем убедитесь, что каждый тест сохраняет его уникальным: ew). Я мог бы использовать GUID, но мне бы хотелось, чтобы вспомогательные методы могли предположить, что "это место, где должны храниться тестовые файлы", без необходимости использовать этот GUID для них. Опять же, это штырь для глобального состояния где-то.

В принципе, мне нужен вызов типа TestRunner.Current.CurrentTest.Name. Существует ли такая вещь?

4b9b3361

Ответ 1

Я еще не обновил до 2.5.7, но он включает класс TestContext, который, как представляется, обеспечивает именно то, что вы ищете: http://www.nunit.org/index.php?p=releaseNotes&r=2.5.7

Ответ 2

(Предполагая С#)

NUnit.Framework.TestContext.CurrentContext.Test.Name 

или

NUnit.Framework.TestContext.CurrentContext.Test.FullName

или если вы действительно ленивы:

this.GetType().ToString()

Ответ 3

Предполагая один метод для теста, в коде NUnit вы можете использовать отражение, чтобы получить имя метода из stacktrace.

Если вы пишете вспомогательный метод в вашем коде NUnit, вызываемом другими методами для ведения этого файла, вы можете использовать этот синтаксис для проверки предыдущего метода:

string MethodName = new StackFrame(1).GetMethod().Name;

См. ответы на вопрос 44153: "Можете ли вы использовать отражение, чтобы найти имя текущего исполняемого метода?" для более подробной информации.