【问题标题】:How to get MSTest to find my test data files?如何让 MSTest 找到我的测试数据文件?
【发布时间】:2009-12-11 08:56:17
【问题描述】:

我有一些测试需要使用来自 excel 文件的外部数据。这些文件包含在测试项目中,在 Visual Studio 中,我编辑了测试设置文件 (Local.testsettings) 以部署数据文件。这使它在 VS 中运行良好。

不过,我们也在与 TeamCity 进行持续集成,但在 TeamCity 中这不起作用。我的数据文件无法用于测试。似乎测试是从名为“C:\TeamCity\buildAgent\temp\buildTmp\ciuser_AS40VS6 2009-12-11 09_40_17\Out”的临时文件夹运行的,并且数据文件没有复制到那里。

我尝试将数据文件的构建操作更改为“资源”并将输出目录的副本设置为“始终”,但这没有帮助。

有谁知道如何进行这项工作?

我运行的是 Visual Studio 2010 beta 2 和 TeamCity 4.5.5,这就是为什么我首先运行的是 MSTest,而不是 NUnit...

【问题讨论】:

  • 我也一直在使用资源解决方法,但为什么我们首先需要它? TC 构建与我们的开发 PC 上的构建有何不同??

标签: mstest teamcity


【解决方案1】:

我通过将我的数据文件(在我的情况下通常是 XML)添加为嵌入式资源来解决这个问题,然后从测试程序集中提取它们。

[TestInitialize]
public void InitializeTests()
{
    var asm = Assembly.GetExecutingAssembly();
    this.doc = new XmlDocument();
    this.doc.Load(asm.GetManifestResourceStream("TestAssembly.File.xml"));
}

【讨论】:

  • 工作正常。我自己应该想到的。 :-) 非常感谢您的快速回答!
【解决方案2】:

这篇文章回答了这个问题:MSTest copy file to test run folder

【讨论】:

  • 这是否有助于在解决方案不可用的 CI 服务器上运行测试?
  • 如果 xml 文件保存在测试程序集中,那肯定:)
【解决方案3】:

接受的答案在技术上是正确的。但是,根据我的经验,我发现将文件作为资源嵌入需要额外的步骤,即记住设置属性“Embedded Resource”。当您拥有大量数据文件时,这将成为一项挑战。此外,随着数据文件数量的增加,单元测试程序集的大小也在不断增长。就我而言,我有超过 500MB 的测试数据文件,将它们全部打包到程序集中并不是一个好主意。

有什么替代方案?

让数据文件保持原样。不要使用DeploymentItemAttribute,不要使用嵌入式资源。请参考我提出的解决方案How do I make a data file available to unit tests?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2010-10-13
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多