代码之家  ›  专栏  ›  技术社区  ›  TALlama numbers1311407

如何以编程方式访问nunit测试名称?

  •  35
  • TALlama numbers1311407  · 技术社区  · 14 年前

    是否有一些全局状态可以访问当前运行的测试名称?

    我有一些测试将文件输出到一个目录中,然后再将它们读入。我希望每个测试都创建一个目录来播放,然后在其自身之后进行清理,我不想将该名称推入(我必须使其唯一,然后确保每个测试都保持其唯一性;ew)。我可以使用一个guid,但是我希望helper方法能够假定“这是存储测试文件的地方”,而不必将guid推到它们周围。同样,这预示着一个全球性的国家。

    基本上,我想打个电话 TestRunner.Current.CurrentTest.Name . 这样的事情存在吗?

    3 回复  |  直到 6 年前
        1
  •  23
  •   Martin R-L    14 年前

    我自己还没有升级到2.5.7,但它包括 TestContext 类,它似乎提供了您要查找的内容: http://www.nunit.org/index.php?p=releaseNotes&r=2.5.7

        2
  •  28
  •   Izzy    6 年前

    (假设C)

    NUnit.Framework.TestContext.CurrentContext.Test.Name 
    

    NUnit.Framework.TestContext.CurrentContext.Test.FullName
    

    或者,如果您真的很懒惰,并且没有使用testcasesource来驱动测试(谢谢@aolszowka):

    this.GetType().ToString()
    
        3
  •  4
  •   Community George Stocker    7 年前

    假设每个测试有一个方法,在nunit代码中,可以使用反射从stacktrace获取方法名。

    如果用其他方法调用的nunit代码编写一个helper方法来记录文件,则可以使用此语法检查 先前方法 :

    string MethodName = new StackFrame(1).GetMethod().Name;
    

    看看答案 question 44153, "Can you use reflection to find the name of the currently executing method?" 了解更多详细信息。