【问题标题】:How do I select the correct test projects for this solution using Rake/Albacore?如何使用 Rake/Albacore 为该解决方案选择正确的测试项目?
【发布时间】:2013-11-07 12:10:25
【问题描述】:

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

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

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

谢谢,

R

【问题讨论】:

    标签: visual-studio unit-testing rake albacore


    【解决方案1】:

    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
    

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

    【讨论】:

    • 感谢您的想法。首先,我相信我一定是小姐说话了。我的测试项目正在使用 sln 构建。问题在于,由于测试项目位于一个公共项目文件夹中,其中包含许多项目,这些项目包含不同配置中的多个不同解决方案,因此很难知道要运行哪些测试项目。 sln 文件当然有一个正确项目的列表,但我不想尝试解析它来获取列表。我认为你的一个想法可能会奏效。构建后将测试 dll 复制到测试文件夹。但是我仍然需要对正确的 projs 进行硬编码。
    • 所以我猜都是对的,闭嘴并对其进行硬编码。我只是希望 sln 可以将所有已编译的 dll 转储到构建工件文件夹中。那好吧。再次感谢。
    • 好的,那么当您构建解决方案时,应该构建正确的测试项目。默认情况下,项目构建到项目相关目录,如fooproj/bin/Release。如果您将OutputPath 属性更改为 msbuild 命令,您可以将所有程序集构建到一个位置!尝试一下,但我喜欢使用完全限定的路径(您将在我的第三个代码块中看到一个示例)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2011-06-05
    • 2014-04-08
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多