安装Visual Studio 2015的SP1后VSTESTcode覆盖率已损坏

时间:2016-02-02 21:09:27

标签: visual-studio-2015 nunit code-coverage vstest

这在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:Starting。

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引擎执行:[HRESULT:0x800706BA]无法为进程外测试创建测试主机进程执行。 (测试主机进程无法使用退出代码0xc0000005运行。无法设置与测试主机进程的通信。(连接尝试超时。)

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

使用NUnit 2.6& VS Nunit Test跑步者扩展 (也试过NUint 3.0和它的测试跑者 - 仍然破产)

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

更新

使用VS 2105编写intellitest - 运行覆盖率的方式不同。

2 个答案:

答案 0 :(得分:1)

这是VS 2015 Update 1中的回归.Wex.Communication.dll在初始化其全局变量时调用了GetModuleFileNameExW。在收集代码覆盖率的Windows 7上,此API导致Wex.Communication.dll被卸载。返回GetModuleFileNameExW时,进程崩溃,因为已卸载DLL。我已修复此问题,等待DLL完全加载后调用GetModuleFileNameExW,以防止崩溃。 (我是一名软件工程师,在微软的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中的新实现。)

答案 1 :(得分:0)

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

mmanela于2015年9月1日的报道

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