gpt4 book ai didi

c# - 为什么 nunit 不运行包含控制/特殊字符的测试

转载 作者:行者123 更新时间:2023-12-04 13:28:14 29 4
gpt4 key购买 nike

如果我有一个测试类

public class Tests
{
[TestCaseSource(nameof(TestSource))]
public void Test(string c)
{
Assert.Pass();
}

public static IEnumerable<object> TestSource()
{
for (char c = '\0'; c < 255; c++)
{
yield return c.ToString();
}
}
}
然后 Visual Studio 中的测试运行器可以发现所有测试,但不会运行所有测试。
这些是未运行的 ascii 字符范围:
U_0001 - U_0006
U_000E - U_001F
U_007F - U_0084
U_0086 - U_009F
我们目前使用其中一些字符,例如 U_0002用于测试中包含但当前未运行的网络工作相关测试
这是测试运行的输出
---------- Starting test discovery for requested test run ----------
NUnit Adapter 3.17.0.0: Test discovery starting
NUnit Adapter 3.17.0.0: Test discovery complete
========== Test discovery finished: 255 Tests found in 4,8 sec ==========
---------- Starting test run ----------
NUnit Adapter 3.17.0.0: Test execution started
Running selected tests in C:\Users\WEIK014\source\repos\TestSourceTestProject\TestSourceTestProject\bin\Debug\netcoreapp2.1\TestSourceTestProject.dll
NUnit3TestExecutor discovered 199 of 199 NUnit test cases
NUnit Adapter 3.17.0.0: Test execution complete
========== Test run finished: 199 Tests run in 8,6 sec (199 Passed, 0 Failed, 0 Skipped) ==========
如您所见,它甚至不承认它跳过了测试。
项目中的版本:
  • .Net Core 2.1 项目
  • NUnit 3.13.1
  • NUnit3TestAdapter 3.17.0

  • 这是这些测试无法运行的一些视觉证据
    enter image description here

    最佳答案

    好吧,这听起来可能是 Visual Studio 中某个地方的错误,或者是显示 Unicode 控制字符的测试适配器。作为一种解决方法,您可以覆盖控制字符的测试显示名称:

    public static IEnumerable<TestCaseData> TestSource()
    {
    for (char c = '\0'; c < 255; c++)
    {
    var data = new TestCaseData(c.ToString());
    if (char.IsControl(c))
    {
    data.SetArgDisplayNames($"{(int)c:X4}");
    }
    yield return data;
    }
    }
    这将保留可打印字符的显示(例如 Test("a") ),控制字符将显示为 Test(0001) , 等等。

    关于c# - 为什么 nunit 不运行包含控制/特殊字符的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66801413/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com