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