我目前在所有测试的顶部都有一行,如下所示:
Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name);
Run Code Online (Sandbox Code Playgroud)
看起来好像我可以把它放在我的Init方法(标记的那个[Setup])中.我认为这会有效,但无论我为堆栈帧放入什么数字,我能得到的最接近的是Init.不是我想要的,但非常接近:
string methodName = new StackFrame(0).GetMethod().Name;
Console.WriteLine(methodName);
Run Code Online (Sandbox Code Playgroud)
考虑到Nunit运行测试的方式,我认为这可能是不可能的.
为什么这样,你说呢?因为在我的控制台输出中,很高兴看到新测试的开始位置,所以如果它们都使用相同的代码并输出不同的值,我将知道哪一个做了什么,而无需调试.
小智 14
以下内容可以帮助我:
string testName = NUnit.Framework.TestContext.CurrentContext.Test.Name;
string testFullName = NUnit.Framework.TestContext.CurrentContext.Test.FullName;
Run Code Online (Sandbox Code Playgroud)
小智 6
直到NUnit 2.5才添加TestCaseAttribute,这可能是您无法找到它的原因.但无论如何它都无济于事 - 遗憾的是,SetUp方法在测试方法之前调用,而不是在测试方法的上下文中调用(所以它不会出现在调用堆栈中).
幸运的是,NUnit已经支持你要做的事了!从GUI,转到工具>选项> GUI>常规>文本输出,然后选中"显示TestCase标签".或者,对于控制台运行器,只需添加/labels参数即可.