NUnit测试在ReSharper可运行,VS及VSTS托管构建代理无法识别
解决NUnit测试在VS2017和VSTS构建代理中无法识别的问题
我之前处理过好几个和你环境类似的场景,结合你的配置(VS2017 15.5.7、.NET Framework 4.7.1、NUnit3 Test Runner扩展),咱们一步步排查解决:
1. 确保测试项目的NUnit NuGet包与VS扩展兼容
VS的NUnit3 Test Runner扩展需要和项目里的NUnit包版本匹配,这是最常见的坑:
- 打开NuGet包管理器,检查测试项目是否同时安装了
NUnit(3.x版本)和NUnit3TestAdapter包,不要用旧的NUnitTestAdapter(那是给NUnit 2.x的)。 - 建议适配器包的版本和VS扩展版本尽量接近,比如如果你的NUnit3 Test Runner扩展是3.11.x,就安装3.11.x系列的
NUnit3TestAdapter,避免版本差异导致的识别问题。 - 操作后,删除测试项目的
bin和obj文件夹,重新构建解决方案。
2. 重置VS测试探索器的配置
有时候VS的测试探索器会卡住,无法加载测试:
- 关闭VS,清理解决方案的所有输出目录(
bin/obj)。 - 重新打开VS,打开测试探索器,点击顶部的「设置」图标,确认NUnit选项已被勾选。
- 右键点击测试项目,选择「运行测试」,强制触发一次测试探索,看看测试是否能被识别。
3. 检查升级后的项目框架配置
你刚把框架从4.5.2升到4.7.1,可能项目文件里有残留配置:
- 右键测试项目→属性→应用程序,确认目标框架确实是
.NET Framework 4.7.1,没有选错版本。 - 右键测试项目→编辑.csproj文件,检查是否有多余的配置项:
- 确保存在
<TestProjectType>UnitTest</TestProjectType>(如果没有可以手动添加到<PropertyGroup>里)。 - 删除任何旧的、指向NUnit2适配器的引用或配置。
- 确保存在
4. 调整VSTS托管构建代理的测试任务配置
对于VSTS(Azure DevOps)构建,需要确保测试任务正确适配:
- 在构建流程中,先添加「NuGet还原」任务,确保所有测试相关的NuGet包(包括
NUnit3TestAdapter)被正确还原。 - 使用「Visual Studio Test」任务,配置测试程序集路径为
**\*Tests.dll(根据你的项目命名调整)。 - 在任务的「测试适配器」部分,勾选「NUnit」选项,或者确保任务会自动从NuGet包加载适配器(如果用的是包内的适配器)。
- 注意:托管代理的VS版本要和你本地的VS2017版本匹配,避免因环境差异导致的测试识别失败。
5. 排查ReSharper与VS测试探索器的冲突
因为ReSharper能正常运行测试,有可能它的测试运行器和VS的默认探索器存在冲突:
- 临时暂停ReSharper:点击「工具→ReSharper→暂停」,然后重启VS。
- 打开测试探索器,再次尝试识别测试,如果能识别,说明是ReSharper的配置问题:
- 打开「ReSharper→选项→工具→单元测试」,检查「测试运行程序」里的NUnit配置,确保没有屏蔽VS的测试探索功能。
- 可以尝试重置ReSharper的设置(「ReSharper→管理选项→导入/导出→重置」),然后重新配置。
内容的提问来源于stack exchange,提问作者Matt Styles
相关产品推荐
相关产品推荐

