【问题标题】:Breaking out unit tests into another project将单元测试分解到另一个项目中
【发布时间】:2008-12-06 12:02:09
【问题描述】:

我曾经在我的主项目中有一个 Tests 文件夹,其中单元测试有这行代码:

Foo foo = new Foo(Environment.CurrentDirectory + @"\XML\FooData.xml" );

我在 Foo 项目中有一个 XML 目录,其中包含 FooData.xml

在我的项目的后期构建事件中,我有以下行 复制 "$(ProjectDir)Foo\Currencies.xml" "$(TargetDir)\XML"

我现在已将所有单元测试分解到另一个项目中以将它们分开,现在运行这些单元测试时出现以下错误。

找不到部分路径 'C:\svncheckout\Foo.Tests\bin\Debug\XML\FooData.xml'

【问题讨论】:

  • 顺便说一句,尽可能使用 System.IO.Path.Combine() 代替字符串连接的路径...

标签: c# unit-testing


【解决方案1】:

除了构建后步骤之外,您能否不只是将其作为 Visual Studio 中的“内容”项,告诉它将其复制到目标目录?我通常要么这样做,要么将其作为嵌入式资源并使用流和 Assembly.GetManifestResourceStream。

【讨论】:

  • 选择 Copy-Always 将其复制到 bin 目录。解决问题
  • 好的。 . 那很好,但我仍然需要从其他项目访问它
  • 该文件是否特定于您的单元测试? (即它仅用于单元测试中的模拟数据或类似数据)如果是这种情况,它应该与您的单元测试项目而不是主项目一起使用。
  • 没有。 .常规项目和单元测试都需要这些数据
【解决方案2】:

我认为您需要将 Foo.Tests 项目的构建后事件更新为:

"$(ProjectDir)Foo.Test\Currencies.xml" "$(TargetDir)\XML"

【讨论】:

  • 你是说把 XML 文件也放到这个项目中吗?
  • 我假设你已经将它移到了那个项目中,导致复制操作没有复制任何东西。
【解决方案3】:

您也可以将 xml 的完整路径放在您的测试模块 app.config 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多