1

我正在编写我的 rakefile 并让它构建得很好。但是,我正在尝试找出一种模式来列出 nunit 运行的测试项目 dll。

我的这个解决方案的项目位于一个包含许多其他项目和许多其他测试项目的文件夹中,因此我不能只运行名称中包含 .test 或类似名称的所有项目的所有测试。我无法查看构建生成的 bin 文件夹,因为虽然测试项目位于解决方案中,但主项目(在本例中为 mvc 项目)并未引用它们。

是否有办法查询 sln 文件以获取测试项目列表并从中获取 dll?或者我应该在主项目中引用我的测试项目,以便我可以将 dll 从 bin 中拉出?我应该闭嘴并硬编码对测试项目的引用吗?

谢谢,

R

4

1 回答 1

0

Raif,我担心,根据您的解决方案/项目结构,您回答了自己的问题……最“明显”的解决方案是闭嘴并对其进行硬编码;)这不是一个糟糕的选择,它可以让您进行测试现在在你的构建中。

nunit :test do |nunit|
  nunit.command = "whatever.exe"
  nunit.assemblies = [
    "source/foo.tests/bin/Release/foo.tests.dll",
    "source/bar.tests/bin/Release/bar.tests.dll"
  ]
end

如果您想要一种花哨的方法,则必须进行一些更改。您可以在测试项目名称中添加一些内容以将它们与其他项目区分开来。然后,您只需在正确的根目录中搜索它们。

nunit :test do |nunit|
  nunit.command = "whatever.exe"
  nunit.assemblies = FileList["source/**/bin/Release/*.myfoo.tests"]
end

或者,修改测试项目构建以将输出移动到公共文件夹,以便您可以从那里收集测试程序集。

msbuild :build_tests do |msb|
  # ... all your other configuration ...
  msb.properties = { 
    :outputpath => (File.expand_path "bin/Tests/Release")
  }
end

nunit :test => [:build_tests] do |nunit|
  nunit.command = "whatever.exe"
  nunit.assemblies = FileList["bin/Tests/Release/*.tests.dll"]
end

最后,我认为你有一些更大的问题。为什么您的测试程序集不与您的主要解决方案/项目一起构建?解决该问题,然后它们将位于输出路径中。尝试分配一个单一的全局输出路径,以便您所有的东西都在一个地方(并且您不必搜索)。而且,更重要的是,您的解决方案中的所有这些其他测试项目是什么?为什么他们不被运行?听起来您的解决方案中可能有多个逻辑程序,并且可能需要将它们拆分。

于 2013-10-29T20:03:35.750 回答