2

我正在使用 Visual Studio 2012,并且正在使用 Visual Studio 的测试框架 ( mstest ) 开发一些集成测试。

几天前,我发现了一些关于现在 Visual Studio 2012 可以在输出目录(即bin\Debugbin\Release)中执行测试的信息,并且我禁用了部署以简化很多事情。

尽管大多数事情都按预期工作,但我发现了一个大问题:一些代码使用类[ClassInitialize]执行进程,并且在禁用部署之后,每当启动进程时,我都会收到此错误:Process

在此处输入图像描述

我的第一印象是,启动过程中的某些东西可能不正确,我将相同的命令和参数复制粘贴到CMD中,它按预期工作。

经过一番调查,我弄清楚了为什么会这样:因为我将测试运行器配置为作为 64 位进程启动。切换到 X86 后,例如Process.Start("cmd")工作。

但更糟糕的是SQLCMD——我在测试运行中启动的实际进程——仍然失败并出现所谓的错误。

在 Visual Studio 测试运行程序中启动任何进程时会发生此错误。

从测试运行程序启动时 SQLCMD 会发生什么?

4

1 回答 1

1

经过大量的试验和错误,我终于解决了这个问题。

  • 现在我可以将测试作为 64 位进程运行(我认为这是主要问题,但我错了!)。
  • 我仍然可以从输出目录运行测试!

但是我必须改变什么才能让它正常工作?该.runsettings文件。它只是注释掉<DataCollectionRunSettings>XML 元素......突然SQLCMD进程又开始工作了!

我真的不知道为什么注释掉配置元素会起作用,但关键是,因为我只想要集成测试并“按原样”运行它们,所以这个解决方案对我来说很好。

无论如何,如果有人能解释为什么注释掉<DataCollectionRunSettings>元素会产生这种效果,我们将不胜感激。

还是非常感谢!

于 2012-11-19T11:26:06.967 回答