如何使用dotnet test命令行获取完全合格的nunit3测试名称

时间:2019-09-02 13:52:46

标签: c# .net-core nunit nunit-3.0 vstest

我正在尝试使用“ dotnet test”命令获取测试的全限定名称,但命令输出仅显示测试名称(方法名称)。

我也想知道每个测试的类别列表

我有一个包含多个名称空间的库,我想进行一个发现步骤,在该步骤中,我需要收集所有测试名称和每个测试的类别。

如果您有一个包含2个测试的库,则在运行命令

时,它们分别是:testNamespace1.Test1和testNamespace2.Test1。
> dotnet test -t myLibrary.dll
Test run for myLibrary.dll(.NETCoreApp,Version=v2.2)
Microsoft (R) Test Execution Command Line Tool Version 15.9.0
Copyright (c) Microsoft Corporation.  All rights reserved.

The following Tests are available:
    Test1
    Test1

因此,我们没有名称空间,并且无法区分这两个测试。

此外,我无法提供每个测试属性/类别。

我想要类似的东西:

...
The following Tests are available:
    testNamespace1.Test1
    testNamespace2.Test1

关于类别信息,可以使用某种选项将此信息导出到xml / json文件。

那么,可以通过“ dotnet test”命令获得此信息吗?

2 个答案:

答案 0 :(得分:0)

我正在尝试一切来使其正常工作,但我认为目前尚不可能。我什至尝试了这个runsettings参数:

DisplayName

Test Explorer DisplayName的默认设置是使用测试的名称,通常是方法名称。使用DisplayName可以在Name,FullName或FullNameSep之间切换。然后,最后一个将使用FullNameSeparator,默认为':'。

https://docs.nunit.org/articles/vs-test-adapter/Tips-And-Tricks.html#displayname

但是,这似乎并不能解决问题。我不知道“测试资源管理器”是什么,但是显然,它不适用于dotnet核心测试适配器。

$ dotnet test -t -- NUnit.DisplayName=FullName
Test run for C:\Users\anthony\...\MyTestLibrary.dll(.NETCoreApp,Version=v3.1)
Microsoft (R) Test Execution Command Line Tool Version 16.6.0
Copyright (c) Microsoft Corporation.  All rights reserved.

The following Tests are available:
    Test1
    Test1
    Test1

答案 1 :(得分:0)

您可以使用.runsettings文件来定义NUnit节,在其中指定使用的DisplayName格式。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <NUnit>
      <DisplayName>FullNameSep</DisplayName>
  </NUnit>
</RunSettings>

您可以通过致电使用

dotnet test -t MyTestLibrary.dll --settings test.runsettings