这在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和它的测试跑者 - 仍然破产) p>
我们正在使用VSTEST,因为我们的代码是C ++ / C#和64位组件的组合。我们需要联合和覆盖测试。
更新
使用VS 2105编写intellitest - 运行覆盖率的方式不同。
答案 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日的报道
设置此链接中提到的注册表项解决了该问题。微软告诉我这是一种解决方法而不是修复。