【问题标题】:TFS Build: Unit Tests fails due to config file locationTFS 构建:单元测试因配置文件位置而失败
【发布时间】:2014-08-08 18:53:14
【问题描述】:

我在我的解决方案中设置了单元测试,并且在本地一切正常。但是,当我运行 TFSBuild 时,单元测试失败,因为配置文件的路径不正确并且我收到空引用异常。

C:\Builds\1\Apps\Test Solution\tst\Deploy_Server$ 2014-08-07 04_42_38\Out\Resources\TestSettings.config"。---> System.NullReferenceException:对象引用未设置为实例一个对象。

我的单元测试项目中有一个配置文件,它已被识别(这是我今天早上修复的上一个问题)并被使用。上面未找到的配置文件位于解决方案内的单独项目中,不幸的是,包含字符串“资源”的路径是硬编码的。

我理想的解决方案是将构建配置为在构建路径下生成一个名为“Resources”的子文件夹,然后在构建过程中将此配置文件复制到该子目录下。

在这个阶段,由于测试影响,我不想更改测试项目之外的任何内容。

任何想法/建议将不胜感激?

附:在 VS2010 中构建的解决方案上运行 TFS 2013,并且在我添加到单元测试之前,该解决方案构建良好。

【问题讨论】:

  • 如果你想做纯单元测试,那么配置文件代表一个应该被模拟的外部依赖。

标签: tfs build automated-tests configuration-files


【解决方案1】:

如果您只想创建文件夹并在构建时复制配置文件,您可以通过添加特定的MSBuild tasks 或使用pre/post build steps in your projects properties 来实现。

另一个选项是配置您需要特定文件进行单元测试。为此,您可以在测试中添加以下属性:

 [DeploymentItem("source", "targetFolder")]

更多信息请参见How to: Deploy Files for Tests

【讨论】:

  • 嗨,我刚刚通过应用设置 [DeploymentItem(@"Resources\TestSettings.config")] 进行了尝试。它的工作原理是将配置文件复制到 out 目录的根目录,但我需要它位于子目录中 - Resources
  • 第二个参数是一个目标文件夹。如果您将其设置为资源,它应该可以工作。
  • 是的,把它改成了这个,它工作了:[DeploymentItem(@"Resources\TestSettings.config", "Resources")] 谢谢
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 2011-03-22
  • 2013-07-06
  • 2013-11-24
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多