MSTest:.testsettings并不总是部署文件

时间:2016-10-26 17:03:00

标签: mstest

我们的解决方案包含一系列用于测试的项目。其中一个项目包含一组测试所需的文件。这些文件是每次调用API路由时都会进行验证的模式。当然,测试会调用一个或多个API路由。

解决方案有.testsettings个文件。此文件已启用部署,并指定需要部署这些模式。此外,每个模式文件都设置为“始终复制”。也。 .testsettings文件位于解决方案的解决方案项目下。

问题是.testsettings文件只是偶尔被尊重。有时会复制文件;有时他们不是。当他们不复制时,我们可以执行以下操作来制作它:

  • 转到测试 - > “测试设置”菜单并选择“选择测试设置”
  • 选择解决方案中的.testsettings文件
  • 重建解决方案
  • 重新运行测试

这通常至少有效一次。但不可避免地,它会停止工作,文件也不会再次部署。

请注意,当您进入测试时 - > “测试设置”菜单,我们当前的.testsettings文件始终已经过检查。因此,选择新的.testsettings文件只是意味着选择用户界面已经说过的文件。

我们考虑过DeploymentItem路线,但由于两个原因,围绕代码维护,这是不切实际的。

  1. 据我所知,DeploymentItem只能放在个别测试中。通过数百次测试,我们将无处不在。它成了代码维护的噩梦。我想把它放在全局TestInitialize方法上,但是每次运行测试时都会重新复制文件,这似乎是不必要的。更不用说我必须在方法上放置几十个DeploymentItem属性,并且每次添加新模式时我们都需要保持最新。
  2. 与此相关,添加新架构意味着在必要时更改现有测试。我们再次进行了数百次测试。
  3. 更好的解决方案是将文件复制一次,然后在需要的时候让代码查看模式的公共池。

    我还考虑用.runsettings替换.testsettings,但它似乎没有XML中的DeploymentEnabled节点,并且该选项存在的地方再次特定于{{ 1}}。

    有没有人有解决方案,或者有人知道它是否是一个已知错误?模式验证发生在幕后 - 个别测试作者不必明确地称之为 - 如果它没有发生它也不会失败(我们不会总是这样做)每个API调用都可以使用模式,因此我们不希望在测试失败的情况下(如果是这样)。结果,通常很难立即确定是否发生了验证。因此,我们有时会在架构实际破坏的测试中获得错误传递,因为DeploymentEnabled文件实际上没有像我们设置的那样部署文件。

1 个答案:

答案 0 :(得分:0)

所以我发现了问题:显然这个问题已在Visual Studio 2015 Update 3中修复。我们使用的是Update 2.一旦我们得到了新的更新,这个问题就消失了。