【问题标题】:How can I show only method name in xUnit in Test Explorer?如何在测试资源管理器的 xUnit 中仅显示方法名称?
【发布时间】:2017-08-23 13:05:58
【问题描述】:

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

  • 如果我使用 NUnit,测试资源管理器会显示方法名称。
  • 如果我使用 xUnit,测试资源管理器会显示完全限定名称,包括命名空间、类名和方法名。有点太长了。

我只想显示方法名称。我见过you can specify a setting in the App.config to show just the method name,但那是基于 App.config 的。

如何在配置模型完全不同的 .NET Core 中做同样的事情?

【问题讨论】:

    标签: configuration .net-core xunit


    【解决方案1】:

    根据official docs,您可以为您的.Net Core 应用程序提供设置,文件名为json

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

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

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

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

    • 应用域

    • 诊断消息

    • longRunningTestSeconds

    • 最大并行线程数

    • 方法显示

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

    • 并行化组装

    • parallelizeTestCollections

    • preEnumerateTheories

    • 影子复制

    编辑:正如您在文档中看到的,只有两个选项:classAndMethodmethod。根据github issue#524,Xunit API中类名和命名空间没有区别,需要找个变通方法。

    例如this answer 方法:

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

    一些有用的链接:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2017-11-29
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多