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”的有效、正确和可读的答案,他比我解释得更好.
我有 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>
标志
这是一个错误,因为它没有在输出中正确报告 window and/or 错误列表 window。
如果有人想阅读,我已经在 GitHub 上创建了一个 Issue。
现在停止编辑此 post,因为它确实得到了回答,我包含的问题 link 显示了“OsirisTerje”的有效、正确和可读的答案,他比我解释得更好.