NUnit 3/ReSharper无法检测项目全部测试的问题求助
我之前升级NUnit版本时也碰到过类似的ReSharper测试识别不全的问题,结合自己的排查经验和社区方案,给你几个针对性的解决方向:
确认项目目标框架兼容性
NUnit 3.8.0对项目目标框架有最低要求,至少得是.NET Framework 4.0及以上。如果你的测试项目还停留在.NET 3.5或更低版本,很可能导致大量测试无法被识别。右键项目→属性→应用程序,检查并升级目标框架到符合要求的版本,之后清理并重建项目。清理ReSharper缓存
ReSharper的缓存经常会“记住”旧的测试配置,导致新升级的测试信息无法被正确加载。操作路径是:ReSharper → Options → Environment → General,点击「Clear Caches」,然后重启Visual Studio,再重新构建整个解决方案。这个小操作解决过我好几次测试识别异常的问题。检查测试类与方法的特性兼容性
NUnit 3和2的特性有不少变动,部分旧特性已经被废弃,这会导致ReSharper无法识别测试:- 确保测试方法都标记了
[Test]特性,且是NUnit.Framework.TestAttribute(别和其他测试框架的特性混淆) - 泛型测试类必须标记
[TestFixture],非泛型类虽然可选,但如果之前用了也可以保留 - 替换废弃特性:比如
[TestFixtureSetUp]要换成[OneTimeSetUp],[TestFixtureTearDown]换成[OneTimeTearDown]
- 确保测试方法都标记了
匹配NUnit测试适配器版本
你安装的NUnit 3测试适配器版本要和NUnit 3.8.0兼容,建议选择略高于核心版本的适配器(比如3.10.x版本)。打开NuGet包管理器,卸载当前的测试适配器,重新安装适配的版本,之后清理解决方案并重建。检查ReSharper测试运行器配置
打开ReSharper → Options → Tools → Unit Testing,确认默认测试运行器是「NUnit 3」,而非旧的「NUnit 2」,同时确保勾选了「Enable NUnit 3 support」选项,让ReSharper完全启用对NUnit 3的支持。查看测试诊断日志
在Visual Studio的输出窗口中,选择「Tests」选项卡,查看测试发现过程中的日志信息。如果有测试类因为编译错误、特性不兼容或者其他原因被跳过,日志里会给出具体的报错提示,能帮你快速定位问题所在。
内容的提问来源于stack exchange,提问作者youngwt

