【问题标题】:NUnit 2.5.7 requires explicit Debug Attach under VS2010NUnit 2.5.7 需要在 VS2010 下显式调试附加
【发布时间】:2010-08-22 19:05:17
【问题描述】:

我刚刚从 NUnit 2.5.2 “升级”到 NUnit 2.5.7,这样我就可以对使用 .Net Framework 4 构建的 DLL 运行单元测试。我已经使用 2.5.2 很长时间了项目属性下的“StartExternalProgram”属性。在那种情况下,我从来不需要显式调试附加到 NUnit 进程。

现在在 2.5.7 下,似乎必须显式附加到 NUnit_Agent 进程才能调试被测代码。

当然,这意味着不需要两次单击来运行我的单元测试,我现在必须单击 VS2010 中的 Debug.Run 图标,等待 NUnit GUI 出现,alt-Tab 回到 VS2010,单击 Debug.Attach.. ,向下滚动列表找到 NUnit Agent,双击选中它,alt-Tab 回到 NUnit GUI,点击 Run 运行测试。

那么,在 2.5.7 下使用 NUnit 变得如此困难是有原因的还是会掉球?

提前感谢有关从早期版本恢复“自动附加”的任何建议。

【问题讨论】:

    标签: visual-studio-2010 debugging nunit


    【解决方案1】:

    问题是 NUnit 正在启动一个子进程 (nunit-agent.exe)。我可以通过打开 nunit.exe.config 并添加以下部分来解决此问题:

    <startup>
        <supportedRuntime version="v4.0.30319" />
    </startup>
    

    编辑:如果您仍想在 .Net 2.0 中使用 nunit,请确保也添加该版本。我的配置最终看起来像这样:

    <startup>
        <supportedRuntime version="v2.0.50727" />
        <supportedRuntime version="v4.0.30319" />
    </startup>
    

    编辑 2:我最近还发现条目的顺序也有所不同。

    【讨论】:

    • 试过了,没有任何乐趣;即,断点未命中。我正在使用 x86 变体,但看不出会有什么不同。我将 元素添加为文件 nunint-x86.exe.config 中 元素的第一个子元素。我很好奇为什么添加这个元素会避免启动代理进程?
    • 据我所知,如果您使用的运行时与受支持的运行时不同,代理进程就会启动。
    • 知道为什么这对我不起作用吗?我注意到代理进程没有启动——因此修复的这方面似乎有效;但是,当我运行应用程序并启动 NUnit 时,运行测试会忽略我设置的任何断点。 NUnit 本身的设置如何(在 Tools.Settings 下?)我尝试了“直接在 NUnit 进程中运行测试”,因为这似乎是显而易见的选择,但这并没有帮助。还有其他想法吗?
    • 打开或关闭卷影复制可能会改变行为,但我不确定这是否会导致问题...
    • @Pedro:完整的解决方案在这个[链接][stackoverflow.com/questions/930438/…
    【解决方案2】:

    也许不是您的问题的完全答案,而是另一种看待它的方式:Resharper 包含一个组件,它在 VS2010 gui 中运行 nunit 测试,而不需要任何单独配置的外部程序。这可能会为您简化事情?

    【讨论】:

    • 如果找不到其他解决方案可以尝试一下;但是另一种选择是使用 VS2010 的内置测试支持。我更喜欢 NUnit,但不是所有额外的 hoo-hah。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多