【问题标题】:CruiseControl.Net: Run NUnit task with parametersCruiseControl.Net:使用参数运行 NUnit 任务
【发布时间】:2014-11-10 10:59:49
【问题描述】:

除非使用 /noshadow 参数启动 nunit 运行器,否则我的 NUnit 测试会失败。 但在 CC.net 中,似乎无法在 <nunit> 块中提供此参数。

我知道我总是可以退回到通用 <exec> 块,但真的没有办法配置 <nunit> 块吗?

【问题讨论】:

  • 我从不使用这些任务。我会用 Nant 来做。然后你可以做任何你想做的事情,并且更容易调试。

标签: nunit cruisecontrol.net


【解决方案1】:

我推测,如果没有记录此开关/标志,那么它在您提到的 中不可用。

对于这些自定义任务要记住的是,它们通常只是最终成为命令行调用的友好包装器。

任务作者只是让你的事情变得更简单。他们负责创建正确的命令行,并将其传递给原始 .exe。

现在,看起来有人确实在这里解决了您感兴趣的命令行:

https://github.com/loresoft/msbuildtasks/blob/master/Source/MSBuild.Community.Tasks/NUnit.cs

注意代码:

 if (DisableShadowCopy)
{
    builder.AppendSwitch(c+"noshadow");
}

所以我想看看你能不能完成这个任务。

事实上,我几乎不使用任何内置的 CC.NET 任务,除了源代码下载和启动 msbuild.exe...然后发布。我把困难的事情留给 msbuild。

另外,我提取了源代码,其中包括一个 MyBuild.proj 文件。 然后我让 cc.net 执行“msbuild.exe MyBuild.proj” 然后我让 cc.net 做一些发布。

为什么?

如果我的大部分逻辑都在 msbuild .proj 文件中,那么如果我切换到另一个 CI 工具,那么转换的创伤就会小得多。事实上,我最近了解到我的一份旧工作是使用 TFS,因为我在 msbuild 中编写了大部分构建逻辑(而不是很多 cc.net 任务)......过渡到 TFS 相当轻松。如果我改用 cc.net 任务......其中的每一个都必须翻译成相应的 tfs 任务......:

无论如何。回到你的问题。请记住...基本上有人(通过任务)通常只是编写一种连接事物的好方法,并为您执行命令行参数/语法糖。所以他们有时会错过一个标志,或者后来添加了一个标志,但原始任务没有更新。

因此,您要么需要自己修改源代码........ :

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    相关资源
    最近更新 更多