vstest.executionengine.x86.exe没有关闭

Jam*_*mez 48 testing unit-testing visual-studio-2012

我在运行单元测试时遇到错误.如果我调试单元测试vstest.executionengine.x86.exe运行,则在测试通过时关闭.

如果我只是运行测试(即使测试就像创建一个新列表一样简单,没有断言)vstest.executionengine.x86.exe不会关闭并保持在任务管理器中运行.

在编写更复杂的测试(包括删除文件/清理sqllite数据库)时,这对我来说是一个问题.

任何帮助,将不胜感激.

编辑:

重现步骤 :

  • 创建新的单元测试项目
  • 调试单元测试 - vstest.executionengine.x86打开和关闭,测试通过.
  • 运行单元测试 - vstest.executionengine.x86打开并保持打开状态

all*_*len 56

这是设计的.

仅当我们检测到两次连续测试运行之间的配置更改时,才会重新启动vstest.executionengine.exe.这有助于确保我们不会不必要地重新启动流程重启.

产品更新 使用VS2013,我们在Test - > Test Settings下有一个名为"Keep Test Execution Engine Running"的新菜单项.您可以取消选中此选项以退出默认行为.

  • 它还锁定正在测试的DLL,这导致在运行单元测试后无法构建.如果用户必须手动终止测试运行程序进程以便在更改代码后进行构建,则不会重新启动测试运行程序会获得任何理论性能提升. (68认同)
  • 我可以确认这是一个问题.我必须使用任务管理器手动关闭vstest.executionengine,否则构建失败,因为它无法写入输出文件. (12认同)
  • 它肯定会锁定dll和pdb.我必须杀死vstest.executionengine.exe以构建我的解决方案,但无法构建我的解决方案,因为vstest.executionengine.exe锁定dll和pdb被删除.VS 2012 64位/ windows 7.我杀了vstest.executionengine.exe,我可以删除文件然后构建. (8认同)
  • 我也可以确认DLL锁定.构建失败,使用Process Explorer(查找句柄)快速检查显示罪魁祸首vstest.executionengine.x86.exe. (4认同)

Hap*_*Cat 41

我通过使用以下作为受影响的测试项目的预构建事件来解决这个问题:

对于64位:

taskkill /F /IM vstest.executionengine.exe /FI "MEMUSAGE gt 1"
Run Code Online (Sandbox Code Playgroud)

或32位:

taskkill /F /IM vstest.executionengine.x86.exe /FI "MEMUSAGE gt 1"
Run Code Online (Sandbox Code Playgroud)

在构建测试项目之前,这会默默地杀死执行引擎.在/FI "MEMUSAGE gt 1"停止从如果执行发动机不运行失败的命令(以及因此生成).


Luc*_*cas 5

为了它的价值,我遇到了同样的情况,结果发现我有一个没有正确清理所有资源的测试.在我的特定情况下,有一个打开网络连接的后台线程在测试退出之前没有关闭.不知道为什么退出测试没有为我关闭这个,但是当我修复我的代码以正确处理我打开的所有资源时,一切都按预期工作.我没有添加任何黑客来杀死vstest.executionengine.exe,我也没有选择退出Test -> Test Settings -> Keep Test Execution Engine Running