gpt4 book ai didi

c# - 使用 NUnit——如何获取当前正在执行的测试夹具和名称?

转载 作者:行者123 更新时间:2023-11-30 15:47:49 25 4
gpt4 key购买 nike

我想在我正在使用的辅助方法中获取当前正在执行的 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 类成为我的固定装置的一部分,如下所示:

[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.... 诸如此类。

因此,我希望能够以某种方式获取当前正在执行的测试,而不必在我正在查看的数千个测试用例中手动重复夹具和测试的名称。

有没有办法得到这样的信息?

最佳答案

NUnit 2.5.7添加了一个“实验性”TestContext 类。它包含的属性之一是 TestName。没试过,不知道TearDown方法里有没有这个信息。

关于c# - 使用 NUnit——如何获取当前正在执行的测试夹具和名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3168997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com