如何在测试资源管理器中仅显示xUnit中的方法名称?

时间:2017-03-29 20:42:23

标签: configuration .net-core xunit

如果我在Visual Studio中运行单元测试:

  • 如果我使用NUnit,Test Explorer会显示方法名称。
  • 如果我使用xUnit,Test Explorer会显示完全限定名称,包括名称空间,类名和方法名。这有点太长了。

我想只显示方法名称。我已经看到了you can specify a setting in the App.config to show just the method name,但这是基于App.config。

如何在.NET Core中执行相同的操作,它具有完全不同的配置模型?

1 个答案:

答案 0 :(得分:5)

根据official docs,您可以为.Net Core应用提供json个名为

的文件的设置
  

xunit.runner.json<AssemblyName>.xunit.runner.json,其中<AssemblyName>是单元测试程序集的名称,没有.dll.exe

等文件扩展名      

如果您的单元测试DLL将全部放在同一个输出文件夹中,您只需要使用这个更长的名称格式,并且您需要消除各种配置文件的歧义。

     

特定于程序集的文件名优先于非特定文件名;文件之间存在没有合并值。

支持的配置项是(配置元素放在顶级对象中):

  • 的AppDomain
  • diagnosticMessages
  • longRunningTestSeconds
  • maxParallelThreads
  • methodDisplay

    设置此项以覆盖测试用例的默认显示名称。如果将其设置为method,则显示名称将只是方法(没有类名);如果将此值设置为classAndMethod,则默认显示名称将是完全限定的类名称和方法名称 JSON模式类型:枚举
    默认值:classAndMethod

  • parallelizeAssembly
  • parallelizeTestCollections
  • preEnumerateTheories
  • 影拷贝

修改:正如您在文档中看到的那样,只有两个选项:classAndMethodmethod。根据github问题#524,Xunit API中的类名和命名空间没有区别,因此您需要找到一种解决方法。

例如,this answer方法:

public class MyFactAttribute : FactAttribute
{
    public MyFactAttribute([CallerMemberName] string memberName = null)
    {
        DisplayName = memberName;
    }
}

一些有用的链接: