如何在 NUnit 中获取 FullName 作为 TestName

How to get FullName as TestName in NUnit

我有一个包含测试方法的抽象测试 class。然后一些 class 派生自这个抽象 class。 TestExplorer 识别 class 派生自抽象 class 结构,但 testNames 仅具有抽象 class。 我需要向 NUNIT 显示测试方法的全名,包括 class,而不仅仅是抽象名称。

我缺少“TestImplementation1”class 名称。 我如何告诉 NUnit 将全名显示为 TestName(我需要“Tests+TestImplement1”信息)?很棒的是像 runsettings 文件这样的全局文件。 TestExplorerView。 我尝试了不同的 nunit 模式,还使用 ​​<DisplayName>FullNameSep</DisplayName>.

运行设置文件

提前致谢!

简单测试class:

public abstract class Tests
{

    public class TestImplement1 : Tests
    {
    }

    public class TestImplement2 : Tests
    {
    }

    [Test]
    [TestCase("hello", TestName = "{M}{a}")]
    public void Test1(string param1)
    {
        Assert.Pass();
    }
}

问得好!

我认为您尝试的方法行不通,因为 NUnit VS 适配器没有使用 NUnit 意义上的“测试名称”。我不是 100% 确定这里的历史,但我认为这是因为测试资源管理器的 Visual Studio 端无法处理具有相同名称的测试。

相反,请尝试查看 DefaultTestNamePattern setting in the .runsettings file. The different options for patterns are defined on this page of the docs - 我期待你想要的 {C}+{M}{a} - 可能需要一些实验才能完全正确。

正如@pwasap4 所指出的——这些由 NUnit 创建的作为测试全名的确切格式目前无法通过模式功能访问。但是,很可能有人会添加此功能。