Я бы хотел получить текущий выполняемый тест NUnit с помощью вспомогательного метода, который я использую.На самом деле мы используем NUnit для интеграционных тестов, а не модульных тестов.Когда тест завершится, мы бы хотели, чтобы тест очистил некоторые файлы журнала, когда он будет завершен.В настоящее время я решил эту проблему с помощью класса StackFrame:
class TestHelper
{
string CurrentTestFixture;
string CurrentTest;
public TestHelper()
{
var callingFrame = new StackFrame(1);
var method = callingFrame.GetMethod();
CurrentTest = method.Name;
var type = method.DeclaringType;
CurrentTestFixture = type.Name;
}
public void HelperMethod()
{
var relativePath = Path.Combine(CurrentTestFixture, CurrentTest);
Directory.Delete(Path.Combine(Configurator.LogPath, relativePath));
}
}
[TestFixture]
class Fix
{
[Test]
public void MyTest()
{
var helper = new TestHelper();
//Do other testing stuff
helper.HelperMethod();
}
[Test]
public void MyTest2()
{
var helper = new TestHelper();
//Do some more testing stuff
helper.HelperMethod();
}
}
Это работает просто отлично, за исключением случаев, когда я хотел бы сделать класс TestHelper частью моего прибора, например:1004 *
[TestFixture]
class Fix
{
private TestHelper helper;
[Setup]
public void Setup()
{
helper = new TestHelper();
}
[TearDown]
public void TearDown()
{
helper.HelperMethod();
}
[Test]
public void MyTest()
{
//Do other testing stuff
}
[Test]
public void MyTest2()
{
//Do some more testing stuff
}
}
Я не могу просто превратить этот класс в глобальное приспособление, потому что иногда один тест будет использовать его более одного раза, а иногда тесту вообще не нужно его использовать.Иногда тесту необходимо прикрепить определенные свойства к TestHelper .... подобные вещи.
В результате я хотел бы иметь возможность каким-то образом получить текущий выполняемый тест без необходимости повторения имени вручнуюприбора и теста в нескольких тысячах тестовых случаев, на которые я смотрю.
Есть ли способ получить такую информацию?