【问题标题】:How to run and debug nunit tests in Visual Studio 2008 on 64-bit Windows 7?如何在 64 位 Windows 7 上的 Visual Studio 2008 中运行和调试 nunit 测试?
【发布时间】:2010-11-28 22:39:03
【问题描述】:

我已将我的开发机器 (WinXP/32bit) 更换为新机器 (Windows 7/64bit)。现在我无法在 Visual Studio 2008 中运行 NUnit 测试。我使用的是最新版本的 TestDrivenNet

我正在寻找的是:

  • a) 如何让 TestDrivenNet 在 Win7/64 上运行
  • b) 寻找替代测试运行器的建议。免费赠送一位。

在 WinXp/32 上有效(在 Win7/64 上无效):

  • 在 VS.NET 中运行一种测试方法
  • 在 VS.NET 中调试一种测试方法
  • 在 VS.NET 中的一个类中运行所有测试

Win7/64 上的症状:

  • 尝试运行测试时,运行器报告“0 通过,0 失败,0 跳过”。它似乎在我的课堂上找不到任何测试。
  • 使用 TestDriven.NET-2.22.2468 (RTM) 和 2.23.2497 (beta) 进行测试。结果相同。

问题:

  • 你能推荐一个适用于 Win7/64 的好的 nunit 测试运行器吗?免费版本是首选。
  • 有什么建议可以让 testdriven.net 运行器正常工作吗?

【问题讨论】:

    标签: .net visual-studio windows-7 64-bit testdriven.net


    【解决方案1】:

    我正在使用带有 TD.NET 2.22.246 的 win7 64 位,它工作得很好。 唯一存在的其他 Visual Studio 运行器是 mstest(仅作为 32 位进程运行)和 TestMatrix(不是免费的)

    要检查它是否是 64 位问题,您可以将测试项目构建为 x86 并使用 TD.NET 运行测试。在这种情况下,TD.NET 将作为 32 位进程运行 - 您可以使用任务管理器并查看 ProcessInvocation.exe 来验证它

    如果测试运行的不是 64 位问题。如果它失败了,那么问题可能出在其他地方。 您是否在测试中使用其他工具?覆盖,嘲笑等,也许问题出在其他地方?

    【讨论】:

    • SharpDevelop IDE 集成了 NUnit,但您还需要将项目更改为以 x86 为目标,以使一切顺利。
    • 感谢您的评论。 SharpDevelop 可以构建 64 位程序集但不能用 nunit 运行它们?奇怪,因为 nunit 有 64 位运行器。
    • 我尝试过将 AnyCPU、x86 和 x64 作为平台目标。结果相同。 TestMatrix 也无法运行测试套件。在解决方案上下文菜单中使用带有 NUnit 2.4 的测试和使用 NUnit 2.5 进行测试时,TDD 可以运行测试。带有调试器的测试和带有解决方案覆盖率的测试确实只显示“0 通过,0 失败,0 跳过”消息。任务管理器中没有显示 ProcessInvocation.exe 和 ProcessInvocation86.exe(我尝试过启用和禁用“测试运行之间的缓存测试进程”)。托盘通知区域中也不显示任何图标。
    • 我也尝试过 Resharper,它能够运行测试。如果只有 Resharper 的测试运行器可以单独出售。 resharper 包的其余部分以我不太喜欢的方式改变了整个 vs.net 编辑器:-(。
    • “其他工具”:我在干净的 vs.net 2008 项目上对此进行测试,只有一个具有 [TestFixture] 类属性的类,一个具有 [Test] 属性的方法。 Net 2.0 作为目标平台,参考 nunit.framework.dll 2.2.7 版本。不涉及其他工具。
    【解决方案2】:

    我的同事遇到了完全相同的问题,这次他能够提供最小的修复。我在这里重新发布它 - 也许它也会对其他人有所帮助。

    看起来问题的根本原因是 Source Gear Vault 3.5.x。详情请参阅他们的support forum post

    将以下代码提交到注册表解决了不工作的 TD.NET:

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}]
    @="IServiceProvider"
    [HKEY_CLASSES_ROOT\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\NumMethods]
    @="4"
    [HKEY_CLASSES_ROOT\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\ProxyStubClsid32]
    @="{A4A1A128-768F-41E0-BF75-E4FDDD701CBA}"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}]
    @="IServiceProvider"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\NumMethods]
    @="4"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\ProxyStubClsid32]
    @="{A4A1A128-768F-41E0-BF75-E4FDDD701CBA}"
    

    【讨论】:

    • 很高兴您找到了解决方案。您能告诉我 Source Gear 是否会在 Visual Studio 中安装插件?
    • SourceGear Vault 作为新的源代码控制插件安装。它不会出现在 VS.NET 的常规插件中,所以我猜它是一种特殊的插件。公平地说,Vault 3.5.x 在 Windows 7 上不受支持,他们建议升级到 4.0 版本。
    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 2012-11-08
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多