Nunit 不会发现有效的非显式测试 Visual studio 2022

Nunit won't discover working non explicit tests Visual studio 2022

我有 3 个正常测试和 1 个显式测试,但是当我 运行 使用测试资源管理器 window 我的测试时,我在输出 window[= 的“测试”下得到了这个输出16=]

========== Starting test run ==========
NUnit Adapter 4.2.0.0: Test execution started
Running all tests in xyz.dll
   NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Explicit run
ExplicitMethod(03/10/2022 08:00:00,03/10/2022 16:00:00): OneTimeSetUp: 
NUnit Adapter 4.2.0.0: Test execution complete
========== Test run finished: 1 Tests (0 Passed, 0 Failed, 0 Skipped) run in 462 ms ==========

*注意我使用的是 NUnit Adapter 4.2.1 而不是 4.2.0,所以这已经很奇怪了

这就是测试资源管理器 window 的样子 Test Explorer window

*请注意,完整的蓝色测试是应该跳过的显式测试

这是个问题,因为它似乎只发现明确的测试。

我想运行的测试当然不是显式的,这里有一个例子

[Test]
[TestCaseSource(nameof(TestNameData))]
public async Task<float> TestName(DateTime start, DateTime end, List<CalculateHoursObj>? list = default)
{
    if (list == null) list = new List<CalculateHoursObj>();
    return await EmployeeService.CalculateOverTimeHours(start, end, list);
}
public static IEnumerable TestNameData
{
    get
    {
        yield return new TestCaseData(TenthMarch8_2022, TenthMarch16_2022).Returns(8.0f);
    }
}

未能发现 and/or 运行 此测试。

但奇怪的是,如果我通过像这样使数据非静态来破坏我所有的非显式测试

public IEnumerable TestNameData
{
    get
    {
        yield return new TestCaseData(TenthMarch8_2022, TenthMarch16_2022).Returns(8.0f);
    }
}

它当然破坏了测试,当我 运行 所有测试它确实发现了所有测试

========== Starting test run ==========
NUnit Adapter 4.2.0.0: Test execution started
Running selected tests in xyz.dll
   NUnit3TestExecutor discovered 2 of 4 NUnit test cases using Current Discovery mode, Non-Explicit run
NUnit Adapter 4.2.0.0: Test execution complete
========== Test run finished: 2 Tests (0 Passed, 2 Failed, 0 Skipped) run in 394 ms ==========

但即使是现在,它也只有 运行s 3 个失败的非显式测试中的 2 个,当然它们都失败了

网上查了1.5个小时,实在找不到解决办法。

不要用“你更新 visual studio 或 nugget 包了吗”来回应

这个问题是一个错误的一部分,解决方案是不使用新的 DateTime() 和 nunit 测试,或者使用 <UseParentFQNForParametrizedTests>true</UseParentFQNForParametrizedTests> <UseNUnitIdforTestCaseId>true</UseNUnitIdforTestCaseId> 标志

通过 id 发现 nunit 测试

这是一个错误,因为它没有在输出中正确报告 window and/or 错误列表 window。

如果有人想阅读,我已经在 GitHub 上创建了一个 Issue

现在停止编辑此 post,因为它确实得到了回答,我包含的问题 link 显示了“OsirisTerje”的有效、正确和可读的答案,他比我解释得更好.