我想在我使用的幫助器方法中獲得當前正在執行的NUnit測試。我們實際上在這裏使用NUnit進行集成測試 - 而不是單元測試。測試結束後,我們希望測試完成後清理一些日誌文件。目前,我已經解決這個使用StackFrame類黑客:使用NUnit - 我如何獲得當前正在執行的測試夾具和名稱?
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 ....類似的東西。
因此,我希望能夠以某種方式獲得當前正在執行的測試,而無需手動重複夾具的名稱並在我正在查看的數千個測試案例中進行測試。
有沒有辦法獲得這樣的信息?
作爲一個參考,我測試了這個,TestName和其他屬性在TearDown方法中可用:'if(TestContext.CurrentContext.Test.Name ==「MyTestName」)' – Mike 2017-10-11 14:07:36