我们有一组大约1000个(当前)测试,用C#编写,每周运行两次。我们正在使用TFS 2017更新1(内部部署),并且系统配置为在另一台计算机上设置的6个VM上运行测试。其中4个虚拟机运行Windows Server 2012R2,另外2个运行Windows Server 2016.所有虚拟机都完全更新。开发是使用VS 2017完成的。所有测试都是直接的,非UI功能测试,在每台机器上使用SQL服务器实例,在测试期间没有跨机器通信或类似的东西。每台机器都有自己独立的环境。
所有测试在本地运行良好(或者如果它们失败,我们知道为什么,这很好)。当我们启动构建时,实际构建和其他预备步骤似乎没问题。但是,当它进入“运行功能测试”步骤时,只有一些代理机器开始运行它们,通常是6个中的2个,有时是3个,通常不是相同的。查看任务管理器我可以看到其他虚拟机没有处理器活动可言。我不知道为什么会这样,或者为什么它似乎是成功启动并开始运行测试的不同机器。
踢球者是因为所有机器都没有运行,这使我们超过了6小时限制测试运行限制,我已经看到在其他线程中处理....我已经尝试了在这些线程中建议的所有内容(包括在.runsettings文件中设置)并且无法让它放弃超时,所以我们的整个运行在6个小时后取消,大量测试中止。出于某种原因,上周我们得到了所有测试的干净运行...自上次运行以来没有任何变化,并且在下一次运行时它恢复了这种行为。
任何关于“懒惰”机器未运行测试或删除6小时超时的任何见解都将非常感激...
附加说明:此行为在8月9日左右开始“突然出现”。在此之前,所有计算机都按预期执行。在那段时间附近没有任何软件升级或任何其他可疑事件。虽然这个6小时的时间限制让我困扰了一年左右。
答案 0 :(得分:0)
有一个名为的执行选项按机器数量分配测试。
而不是在程序集级别分发测试,启用此功能 设置将根据机器数量分配测试 无论给予任务的容器组件如何。
注意:dll中的测试也可能分发给多台计算机。
要绕过6小时限制,您可以在 testsettings
文件中将runTimeout设置为xx小时,并且应该可以运行超过6小时的测试成功。
<Execution>
<Timeouts runTimeout="36000000" testTimeout="5400000" />
<AgentRule name="Execution Agents">
</AgentRule>
</Execution>
更多详情请参阅此主题中的答案:TFS 2015 vNext : Test Run always abort after 6 hours
答案 1 :(得分:0)
好的,在彻底回过头来之后,我发现我的设置实际上有两个问题。难以捉摸的一个是我的runsettings文件没有ForcedLegacyMode = True,显然它甚至需要查找testsettings文件。一旦我纠正了这一点,我发现它没有正确指向我的testsettings文件。之后还有一个问题是它现在没有发现任何测试,但我认为这可能是由于一个不同的问题,所以我怀疑最初陈述的问题现在已经解决了。谢谢你的建议!