0

我在尝试通过 OpenCover 运行 VS10 测试套件时遇到问题,使用 mstest 作为我的目标应用程序。使用 MsTest 直接运行测试可以使用以下命令:

"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /resultsfile:"<application_root_path>\UnitTestResults\MyProject.vsmdi.trx" /testmetadata:"MyProject.vsmdi" /testlist:"ServiceTests" /testlist:"DatabaseTests"

但是,当尝试在 OpenCover 下运行相同的命令时,如下所示:

OpenCover\Opencover.console.exe -register:user -target:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" -targetargs:"/resultsfile:"<application_root_path>\UnitTestResults\MyProject.vsmdi.trx" /testmetadata:"MyProject.vsmdi" /testlist:"ServiceTests" /testlist:"DatabaseTests"" -output:<application_root_path>\UnitTestResults\Coverage

关于 .vsmdi.trx 文件(我收集的文件应该在测试运行后由 MsTest 创建)失败,并出现以下错误:

Error occurred while loading document '<application_root_path>\UnitTestResults\MyProject.vsmdi.trx'.
Code:   0x800c0006
The system cannot locate the object specified.

因此,基本上,它抱怨在运行测试之前找不到结果文件,但该文件应该在运行结束时创建。

这可能是与 OpenCover 相关的问题,因为直接使用 mstest 运行时相同的参数有效?

我检查了我的路径,它们都解决了,即使错误中的路径是 mstest 应该生成文件的路径。

谢谢。

4

1 回答 1

1

看起来您在通过 targetargs 传递数据时可能需要转义引号

-targetargs:"/resultsfile:"<application...""

变成

-targetargs:"/resultsfile:\"<application...\""

wiki 中有关处理空间的详细说明。

或者,将您的命令在 cmd/bat 文件中执行测试,然后使用 opencover 执行该命令。

于 2013-10-01T11:42:07.583 回答