Ответ 1
Я еще не обновил до 2.5.7, но он включает класс TestContext
, который, как представляется, обеспечивает именно то, что вы ищете: http://www.nunit.org/index.php?p=releaseNotes&r=2.5.7
В каком-то глобальном состоянии я могу получить доступ к текущему тестовому имени?
У меня есть тесты, которые выводят файлы в каталог и читают их обратно. Я бы хотел, чтобы каждый тест создавал директорию для воспроизведения, а затем очищался после себя, и я не хочу подталкивать это имя в ( Я должен сделать его уникальным, а затем убедитесь, что каждый тест сохраняет его уникальным: ew). Я мог бы использовать GUID, но мне бы хотелось, чтобы вспомогательные методы могли предположить, что "это место, где должны храниться тестовые файлы", без необходимости использовать этот GUID для них. Опять же, это штырь для глобального состояния где-то.
В принципе, мне нужен вызов типа TestRunner.Current.CurrentTest.Name
. Существует ли такая вещь?
Я еще не обновил до 2.5.7, но он включает класс TestContext
, который, как представляется, обеспечивает именно то, что вы ищете: http://www.nunit.org/index.php?p=releaseNotes&r=2.5.7
(Предполагая С#)
NUnit.Framework.TestContext.CurrentContext.Test.Name
или
NUnit.Framework.TestContext.CurrentContext.Test.FullName
или если вы действительно ленивы:
this.GetType().ToString()
Предполагая один метод для теста, в коде NUnit вы можете использовать отражение, чтобы получить имя метода из stacktrace.
Если вы пишете вспомогательный метод в вашем коде NUnit, вызываемом другими методами для ведения этого файла, вы можете использовать этот синтаксис для проверки предыдущего метода:
string MethodName = new StackFrame(1).GetMethod().Name;
См. ответы на вопрос 44153: "Можете ли вы использовать отражение, чтобы найти имя текущего исполняемого метода?" для более подробной информации.