如何使用Rake / Albacore为此解决方案选择正确的测试项目?

时间:2013-10-28 16:02:46

标签: visual-studio unit-testing rake albacore

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

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

有没有办法调试sln文件以获取测试项目列表并从中获取dll?或者我应该在主项目中引用我的测试项目,以便将dll拉出垃圾箱?我应该闭嘴并硬编码对测试项目的引用吗?

谢谢,

[R

1 个答案:

答案 0 :(得分: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

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

相关问题