当有超过128个测试时,为什么MSTest无法部署一些测试输入文件?

时间:2014-07-25 11:49:15

标签: unit-testing jenkins mstest

我们在构建服务器上运行自动化测试,该服务器使用Jenkins检查源代码,构建它并通过调用MSTest来运行测试。在我们添加第129单元测试之前,一切正常。然后其他一些测试神秘地失败了。失败的测试都需要输入文件,这些文件应该部署到TestResults目录。但是,添加第129个测试时,不会部署这些输入文件!请注意,其他测试也需要输入文件,但这些文件会被部署。没有明显的理由说明为什么某些测试输入文件已部署但其他测试输入文件没有部署。

我们尝试过的事情:

  • 添加第129单元测试的新测试项目或新测试中的内容无关紧要(例如:Assert.AreEqual(1,1);)
  • 在我以身份登录时,在构建服务器上的命令行(Visual Studio 2010 x86工具)上手动运行MSTest。当测试超过128次时,相同的测试失败。因此,它不太可能与Jenkins有关,或者自动化测试在不同的用户帐户(系统)下运行。
  • 将构建服务器中构建的代码复制到我的笔记本电脑,并在那里运行相同的MSTest命令。在我的笔记本电脑上,所有129个测试都通过,即使构建机器和我的笔记本电脑使用相同版本的MSTest(10.0.30319.1)。

还有其他人见过这样的事吗?它必须是仅在添加超过128个测试时才会发生的事情,这可能发生在一台机器而不是另一台机器上! 128是巧合吗?我知道这在计算方面是一个重要的数字。

1 个答案:

答案 0 :(得分:0)

经过大量调查后,看起来MSTest或它所调用的某个代理商存在一些问题。有关详细信息,请参阅MSDN post

但是当我在构建服务器机器上安装Visual Studio 2013时,除了已经安装的VS2010之外,所有129个测试都会通过,无论是从VS2010命令提示符运行MSTest还是通过Jenkins运行。请注意,VS2013 用于构建或运行测试;我甚至没有在构建服务器上打开它;刚安装好了!

因此安装VS2013会影响VS2010的MSTest运行方式。也许它修补MSTest或它使用的某个代理,或者更改一些环境变量,或者......?!所以可能有一个较短的修复,但现在的解决方法是在VS2010上安装VS2013,如果你想使用MSTest for VS2010执行超过128次测试。当然微软知道这个问题吗?!