繁体   English   中英

是否可以在TestCases和Microsoft Test Manager中使用.testsettings文件?

[英]Is there an alternative for using a .testsettings file with TestCases and Microsoft Test Manager?

我们这里有一个特殊情况,这导致我们使用TFS 2012在新创建的实验室环境中自动测试失败。

我们总是有很多测试DAL代码的“单元”测试,这些代码又使用企业库数据应用程序块对数据库执行操作。 该设置是在几年前进行的,以使我们的客户可以选择SqlServer或Oracle数据库以及我们的产品,从而利用DatabaseFactory类以及entlib.data中所有支持的通用接口和类。 我之所以这样说“单元”,是因为它们实际上不是纯粹的单元测试,而是集成的,因为它们需要一个真正的数据库才能工作。

为了针对两个数据库测试相同的SQL代码,我们在TFS项目分支的“资源”文件夹中维护两个单独的.config文件,它们指向我们的测试数据库:

  • Resources\\SqlServer\\ConnectionStrings.config (特定于SqlServer的连接字符串)
  • Resources\\Oracle\\ConnectionStrings.config (Oracle特定的连接字符串)

在根Resources文件夹中,有两个随附的.testsettings文件,它们负责部署特定于每个数据库的文件:

  • Resources\\SqlServer.testsettings (用于部署SqlServer \\ ConnectionStrings.config文件)
  • Resources\\Oracle.testsettings (用于部署Oracle \\ ConnectionStrings.config文件)

由于整个结构都在源代码控制中,因此测试设置能够使用相对路径查找.config文件,从而使我们能够测试所有内容,而无需手动设置参数。 在devs机器上,我们总是在运行测试时选择SqlServer.testsettings文件,这样,在签入代码之前,无需安装整个oracle环境来验证其更改。 验证的Oracle端始终发生在我们的构建过程中,在该过程中,我们实际上对每种方法进行了两次测试:首先使用开发人员使用的相同SqlServer.testsettings ,然后使用Oracle.testsettings

这样,我们可以设置测试程序集的app.configs来将connectionStrings节点重定向到外部文件,如下所示:

<configuration>
  <connectionStrings configSource="ConnectionStrings.config"/>
  ...

运行测试时,mstest会根据用来启动运行的.testsettings将足够的ConnectionStrings.config文件复制到测试的工作文件夹中。

直到今天,它一直运行良好,直到我发现通过Microsoft测试管理器启动的测试都忽略了Visual Studio .testsettings文件 现在,我试图在我们的实验室环境中运行这些相同的测试,但是未部署ConnectionStrings.config文件(可以理解),并且测试失败。

在不使用.testsettings文件的情况下,如何实现这一目标? 在尝试在新的x64构建服务器中正确设置oracle之后,我们在构建定义中禁用了Oracle测试。 现在,我们开始设置实验室环境,我们考虑使用Oracle在其中的一台计算机上配置了整个系统,从而使我们能够再次使用特定于oracle的连接字符串运行这些“单元测试”以验证查询。 同时,我们希望继续使用SqlServer在本地以及在构建服务器上测试所有内容。

我认为在这种情况下无法使用[DeploymentItem] ,因为它用于静态文件,而不是像我们当前设置那样的不可选择的动态文件。

我们可以在MTM / Lab Env中与TestCases一起使用的.testsettings部署过程是否等效? 在我们的TestPlan的Properties选项卡上,我可以看到Automated Runs -> Test Settings Runs- Automated Runs -> Test Settings选项,但这似乎只允许通过指定绝对路径进行部署(这将在目标计算机上实际解析)。 有没有一种方法可以在那里指定相对路径,指向我们在TFS上签入的ConnectionStrings.config文件? 也许我还缺少另一个选择,也许使用了多个构建配置?

通过进入配置管理器并为活动解决方案配置下的“ 新建” ,为每种服务器类型创建单独的构建配置 编辑项目文件,然后执行以下操作:

<PropertyGroup Condition="'$(Configuration)' == 'Oracle'">
  <appConfig>App.Oracle.Config</AppConfig>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'SQL'">
  <appConfig>App.SQL.Config</AppConfig>
</PropertyGroup>

然后,确保每个配置文件中都有正确的连接字符串。 然后,您可以配置TFS以使用那些构建配置进行构建。

有关使用PropertyGroup和ConditionMSBuild配置MSBuild项目属性的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM