1

这在安装 SP1 之前有效。

namespace Test
{
    public class Adder
    {
        public int Add(int n1, int n2)
        {
            return n1 + n2;
        }    
    }
}

namespace AdderTest
{
    [TestFixture]
    public class Class1
    {
        [Test]
        public void AddTest1()
        {
            var add = new Adder();
            var res = add.Add(2, 3);
            Assert.AreEqual(5, res);
        }
    }
}

此命令在安装 SP1 后仍然有效

vstest.console.exe /usevsixextensions:true /framework:framework45 /platform:x86 AdderTest.dll

这个没有,并且在我们团队中安装了 SP1 的每台 PC 上都失败了。

vstest.console.exe /enablecodecoverage /usevsixextensions:true /framework:framework45 /platform:x86 AdderTest.dll

错误:活动测试运行因执行过程意外退出而中止。检查执行过程日志以获取更多信息。如果未启用日志,则启用日志并重试。

日志显示以下错误:

V, 10664, 11, 2016/02/02, 15:00:09.114, 2115392201142, vstest.console.exe, TestRunRequest:SendTestRunMessage: 开始。

I, 10664, 11, 2016/02/02, 15:00:09.116, 2115392205435, vstest.console.exe, TestRunRequest:SendTestRunMessage: 已完成。

E, 10664, 10, 2016/02/02, 15:00:23.722, 2115441528953, vstest.console.exe, TAEF Engine Execution: [HRESULT: 0x800706BA] 无法为进程外测试执行创建测试主机进程。(测试主机进程无法运行,退出代码为 0xc0000005。无法建立与测试主机进程的通信。(连接尝试超时。))

似乎 SP1 安装了所有新的 vstest exe 和 DLL,似乎也安装了 TAEF 的东西,虽然我使用的是 Windows 7

使用 NUnit 2.6 和 VS Nunit 测试运行器扩展(也尝试了 NUint 3.0 和它的测试运行器 - 仍然坏了)

我们使用 VSTEST 是因为我们的代码是 C++/C# 和 64 位组件的组合。我们需要联合和覆盖测试。

更新:

使用 VS 2105 编写了一个智能测试 - 以同样的方式运行覆盖失败。

4

2 回答 2

1

这是 VS 2015 Update 1 中的回归。Wex.Communication.dll 在其全局变量被初始化时调用了 GetModuleFileNameExW。在 Windows 7 上收集代码覆盖率时,此 API 导致 Wex.Communication.dll 被卸载。当 GetModuleFileNameExW 返回时,进程因 DLL 被卸载而崩溃。我已修复此问题,等待 DLL 完全加载后调用 GetModuleFileNameExW,从而防止崩溃。(我是一名在 Microsoft 从事 TAEF 工作的软件工程师。)该修复程序将在未来的 VS 2015 更新中发布。

要解决此问题,请通过在 HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\FeatureFlags\TestingTools\UnitTesting\Taef 项中将名为“Value”的注册表值设置为 0 来禁用 TAEF。(VSTest 在 VS 2015 中有两个实现。禁用 TAEF 时,使用 VS 2013 中的旧实现。基于 TAEF 的实现是 VS 2015 中的新实现。)

于 2016-02-06T10:15:01.127 回答
0

请参阅此链接https://github.com/mmanela/chutzpah/issues/387

mmanela 于 2015 年 9 月 1 日发表的文章

设置此链接中提到的注册表项解决了该问题。微软告诉我这是一种解决方法,而不是修复。

于 2016-02-03T19:42:12.473 回答