从TeamCity服务器上的build文件夹运行MS测试

时间:2014-08-08 14:36:53

标签: .net teamcity mstest

我正在尝试从TeamCity上的build文件夹运行MS测试。

主要原因是我们的应用程序使用多个配置文件(带有“复制到输出目录”选项集的csv文件),这些文件是从其运行文件夹加载的。这些不是测试文件,而是必需的应用程序文件,因此使用MSTest部署属性不是一种选择。

在本地,R#和VS2013正确运行测试,在TeamCity(8.1)上我收到错误 - 缺少csv文件。

我尝试使用.runsettings文件(“构建步骤配置/ MSTest运行配置文件”)指定<DeploymentEnabled>False</DeploymentEnabled>但是MSTest(12.0.21005.1)返回此错误:

  

“文件'C:\ TeamCity \ buildAgent \ work \ d6160ab253397620 \ tests.runsettings'格式未知,无法转换为当前版本。”

该文件非常简单(从msdn复制):

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- MSTest adapter -->
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
  </MSTest>
</RunSettings>

在过去的两个小时里,我正在猛烈抨击我,我无法相信,使用MSTest很难实现这么简单。

[编辑]

该文件看起来应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings
  id="b8968a45-0b6a-40a9-bcf7-7573da114965"
  name="MSTest"
  enableDefaultDataCollectors="false"
  xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description><!--_locID_text="Description1"-->These are default test settings for a local test run.</Description>
  <Deployment enabled="false" />
</TestSettings>

...但它仍然不起作用:测试在自定义文件夹中运行,并且不会复制csv文件。

2 个答案:

答案 0 :(得分:1)

Pawel,只是偶然发现了你的问题并且:

  1. 尝试了.runsettings的更新版本 - 它运行正常
  2. 如果TC没有看到CSV文件,可以在msbuild脚本中添加以下密钥 - 编译后:
  3. &#13;
    &#13;
    <Copy SourceFiles="$(MSBuildProjectDirectory)\bin\FROM\.config"  DestinationFolder="$(MSBuildProjectDirectory)\BuildOutput\TO\.config"></Copy>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:0)

您说您无法使用MSTest部署属性,但我遇到了同样的问题,并使用DeploymentItem属性解决了它。

我的部署项不是CSV,而是自动生成的DLL(XmlSerializer DLL),它在构建期间复制到输出文件夹,并且需要位于Test run文件夹中。

在Visual Studio中,我还使用了<DeploymentEnabled>False</DeploymentEnabled>的RunSettings选项,但无法找到使TeamCity使用此文件的方法。

最后,我为每个TestClass添加了一个DeploymentItem,解决了这个问题。

DeploymentItem只需要包含要复制的文件的名称,因为它相对于构建输出文件夹并将项目复制到测试运行文件夹。

在你的情况下,我猜它会是这样的:[DeploymentItem("Data.csv")]