UWP单元测试应用启动后无测试执行,报错求助
UWP单元测试启动即关闭且报错“Value cannot be null. Parameter name: key”的解决办法
兄弟,我之前踩过这个UWP单元测试的坑,跟你遇到的报错一模一样!你已经试过清理.vs和bin/obj文件夹重新生成了,那给你几个我亲测有效的解决方向,挨个试试:
1. 检查测试项目的Package.appxmanifest配置
这个是最容易出问题的地方:
- 确认
Identity节点的Name、Publisher、Version三个属性都正确配置,必须和你的主应用项目保持一致,尤其是Publisher字段,一旦不匹配就会导致测试应用启动失败。 - 检查是否遗漏了测试需要的权限,比如测试涉及文件读写、网络访问的话,要在
Capabilities里勾选对应的选项。
2. 重置Visual Studio测试组件
有时候MSTest适配器的配置会出问题,试试重置:
- 以管理员身份打开Visual Studio命令提示符(在开始菜单的Visual Studio文件夹里能找到)
- 执行以下命令:
vstest.console.exe /ResetSettings - 重启Visual Studio,再重新运行测试。
3. 排查测试方法的特性与代码
- 确保所有测试方法都标记了
[TestMethod]特性,测试类要标记[TestClass],不要遗漏。 - 检查测试方法和类的命名,尽量避免特殊字符、空格或者中文(不是绝对不行,但很容易触发适配问题)。
- 如果你的测试类继承了自定义基类,检查基类的构造函数或者初始化逻辑有没有抛出空引用异常,这会直接导致测试应用启动崩溃。
4. 尝试切换测试框架
如果MSTest适配器一直出问题,可以试试换个测试框架:
- 给测试项目安装xUnit或者NUnit的NuGet包,再安装对应的测试适配器(比如xUnit.runner.visualstudio)
- 把现有测试改成对应框架的格式(比如xUnit用
[Fact]替代[TestMethod]),再运行测试,看能不能正常执行,以此排查是不是MSTest本身的适配问题。
5. 确认SDK版本兼容性
- 检查测试项目的目标SDK版本和最低SDK版本是否和主应用项目一致,而且你的开发环境已经安装了对应的Windows SDK版本。
- 如果SDK版本不匹配,会导致测试应用的运行时环境出问题,直接启动失败。
附你提供的错误日志:
[4/11/2018 7:36:42 Informational] ------ Run test started ------
[4/11/2018 7:37:05 Error] An exception occurred while invoking executor 'executor://mstestadapter/v2': Value cannot be null. Parameter name: key
[4/11/2018 7:37:09 Informational] ========== Run test finished: 0 run (0:00:26.8121266) ==========
内容的提问来源于stack exchange,提问作者James Esh
相关产品推荐
相关产品推荐

