MSTest:.testsettings 并不总是部署文件
MSTest: .testsettings is not always deploying files
我们有一个解决方案,其中包含一系列用于我们测试的项目。其中一个项目包含一组测试所需的文件。这些文件是将在每次调用 API 路由时进行验证的模式。测试自然会调用一个或多个 API 路由。
解决方案有一个 .testsettings
文件。该文件启用了部署,并指定需要部署这些模式。此外,每个模式文件都设置为“始终复制”。还。 .testsettings
文件在解决方案中,在解决方案项下。
问题是 .testsettings
文件只是偶尔受到尊重。有时文件被复制;有时他们不是。当他们不抄袭时,我们可以通过以下方式解决:
- 转到测试 -> 测试设置菜单并选择 Select 测试设置
- Select解决方案中的
.testsettings
文件
- 重建解决方案
- 重新运行 测试
这通常至少有效一次。但不可避免地,它会停止工作并且不会再次部署文件。
请注意,当您转到“测试”->“测试设置”菜单时,我们当前的 .testsettings
文件始终处于选中状态。所以选择一个新的 .testsettings
文件就意味着选择 UI 已经说过的文件。
我们考虑过 DeploymentItem
路线,但出于两个原因,围绕代码维护,这是不切实际的。
- 据我所知,
DeploymentItem
只能放在个别测试上。有了数百个测试,我们会无处不在。这将成为代码维护的噩梦。我想把它放在全局 TestInitialize
方法上,但是每次测试 运行 时都会重新复制文件,这似乎没有必要。更不用说我必须在方法上放置几十个 DeploymentItem
属性,并且每次添加新模式时我们都需要保持最新。
- 与此相关,添加新模式意味着在必要时更改现有测试。同样,我们有数百个测试。
一个更好的解决方案是将文件复制一次,然后在需要时让代码在公共模式池中查找。
我也考虑过将 .testsettings 替换为 .运行settings,但它似乎在 XML 中没有 DeploymentEnabled
节点,并且该选项存在的地方是再次特定于 DeploymentEnabled
.
有没有人对此有解决方案,或者有人知道这是否是一个已知错误?模式验证发生在幕后——各个测试作者不必显式调用它——如果它没有发生,它不会使测试失败(我们并不总是为每个 API 调用,所以如果是这种情况,我们不想让测试失败)。因此,通常很难立即确定是否进行了验证。正因为如此,我们有时会在模式实际损坏的测试中得到错误的通过,这都是因为 .testsettings
文件并没有像它设置的那样实际部署我们的文件。
所以我发现了问题:显然这个问题已在 Visual Studio 2015 Update 3 中修复。我们使用的是 Update 2。一旦我们获得新的更新,这个问题就消失了。
我们有一个解决方案,其中包含一系列用于我们测试的项目。其中一个项目包含一组测试所需的文件。这些文件是将在每次调用 API 路由时进行验证的模式。测试自然会调用一个或多个 API 路由。
解决方案有一个 .testsettings
文件。该文件启用了部署,并指定需要部署这些模式。此外,每个模式文件都设置为“始终复制”。还。 .testsettings
文件在解决方案中,在解决方案项下。
问题是 .testsettings
文件只是偶尔受到尊重。有时文件被复制;有时他们不是。当他们不抄袭时,我们可以通过以下方式解决:
- 转到测试 -> 测试设置菜单并选择 Select 测试设置
- Select解决方案中的
.testsettings
文件 - 重建解决方案
- 重新运行 测试
这通常至少有效一次。但不可避免地,它会停止工作并且不会再次部署文件。
请注意,当您转到“测试”->“测试设置”菜单时,我们当前的 .testsettings
文件始终处于选中状态。所以选择一个新的 .testsettings
文件就意味着选择 UI 已经说过的文件。
我们考虑过 DeploymentItem
路线,但出于两个原因,围绕代码维护,这是不切实际的。
- 据我所知,
DeploymentItem
只能放在个别测试上。有了数百个测试,我们会无处不在。这将成为代码维护的噩梦。我想把它放在全局TestInitialize
方法上,但是每次测试 运行 时都会重新复制文件,这似乎没有必要。更不用说我必须在方法上放置几十个DeploymentItem
属性,并且每次添加新模式时我们都需要保持最新。 - 与此相关,添加新模式意味着在必要时更改现有测试。同样,我们有数百个测试。
一个更好的解决方案是将文件复制一次,然后在需要时让代码在公共模式池中查找。
我也考虑过将 .testsettings 替换为 .运行settings,但它似乎在 XML 中没有 DeploymentEnabled
节点,并且该选项存在的地方是再次特定于 DeploymentEnabled
.
有没有人对此有解决方案,或者有人知道这是否是一个已知错误?模式验证发生在幕后——各个测试作者不必显式调用它——如果它没有发生,它不会使测试失败(我们并不总是为每个 API 调用,所以如果是这种情况,我们不想让测试失败)。因此,通常很难立即确定是否进行了验证。正因为如此,我们有时会在模式实际损坏的测试中得到错误的通过,这都是因为 .testsettings
文件并没有像它设置的那样实际部署我们的文件。
所以我发现了问题:显然这个问题已在 Visual Studio 2015 Update 3 中修复。我们使用的是 Update 2。一旦我们获得新的更新,这个问题就消失了。