【问题标题】:Resharper running all tests when only a single one is selectedResharper 在仅选择一个时运行所有测试
【发布时间】:2009-07-10 16:15:18
【问题描述】:

我将 Resharper 4.5 与 Visual Studio 2008 和 MBUnit 测试一起使用,使用 ReSharpher 运行测试似乎有些奇怪。

在侧面,每个测试方法的类旁边都有图标,带有运行和调试选项。当我选择运行时,它只会向我显示单个测试的结果。但是我注意到测试需要很长时间才能运行。

当我运行 Sql Server 分析器并开始单步执行代码时,我意识到它不仅运行选定的测试,还运行类中的每一个测试。有什么理由让它看起来像只运行一个单元测试而实际运行它们?

当我只关心一个结果时,等待所有集成测试运行变得很痛苦,有什么办法可以改变吗?

【问题讨论】:

  • 你使用 Gallio 运行 MBUnit 测试吗?
  • 您使用的是哪个版本的 Gallio?旧版本包含一个错误,该错误产生的行为类似于您所描述的>
  • 我安装了 Gallio,但我不认为我用它来运行测试。我只使用 MBUnit exe。如何判断 VS 是否正在使用 Gallio?安装的版本是3.0.0.179。
  • 同样的问题,很烦

标签: unit-testing resharper mbunit


【解决方案1】:

我今天刚刚遇到这个问题,我想我可能已经意识到导致这个错误的原因,我的方法命名类似

    [TestMethod]
    public void TestSomething()

    [TestMethod]
    public void TestSomethingPart2()

我看到运行 TestSomething() 会同时运行两者,但运行 TestSomethingPart2() 不会。我得出的结论是,如果您命名方法,则方法名称可能会发生完全匹配,它将运行测试。将我的第二个测试重命名为 TestPart2Something 后,这个问题就消失了。

【讨论】:

  • 这很有趣。有其他人确认过这个问题吗?
  • 即使我的方法名称完全不同,我也注意到了这种行为!
  • 在提出问题 7 年后,谁对特定技术版本的某个时间点的回答投了反对票……你就是傻
【解决方案2】:

我可以确认这是 ReSharper 5.1 的问题。

从下面的示例代码中重现运行测试 A(所有测试都将执行);运行测试 AB(除 A 之外的所有都将执行);等:

[TestMethod]
public void A()
{
    Console.WriteLine("A");
}

[TestMethod]
public void AB()
{
    Console.WriteLine("AB");
}

[TestMethod]
public void ABC()
{
    Console.WriteLine("ABC");
}

[TestMethod]
public void ABCD()
{
    Console.WriteLine("ABCD");
}

[TestMethod]
public void ABCDE()
{
    Console.WriteLine("ABCDE");
}

我花了很长时间才解决这个问题。我将远程调试器连接到开发服务器,但它的故障频率比我预期的要多...

就像其他人所说的那样,它似乎是在做 StartsWith 而不是 Contains。 解决方法是不要让测试方法名称以另一个测试方法名称开头。

【讨论】:

    【解决方案3】:

    我希望这会出现在 Chris 的帖子下。

    我有类似的情况证实了他注意到的行为。

    [TestMethod()]
    public void ArchiveAccountTest()
    
    [TestMethod()]
    public void ArchiveAccountTestRestore()
    

    所以运行第一个方法会同时执行,而运行第二个则不会。将我的第二种方法重命名为 TestRestore,问题就消失了。

    注意:我使用的是 Resharper 5.1,所以还是有问题。

    【讨论】:

      【解决方案4】:

      当您在编辑器中单击鼠标右键时,会出现上下文菜单,您可以从中运行和调试测试。在测试方法内右键单击以运行或调试该单个测试。在任何测试方法之外右键单击以运行或调试当前文件中包含的整个测试类。

      【讨论】:

      • 所以方法声明旁边的“(方法名称)运行”图标真的意味着“运行整个类”吗?这似乎很误导......
      • 不是我写的,所以真的不能说。右键单击上下文菜单是否有效?
      • 不,它仍在运行它们,即使我右键单击并说运行单元测试。
      【解决方案5】:

      当前版本的 Gallio 包括一个单元测试运行器,它支持内置的 MbUnit(和 NUnit)。

      从 Resharper 菜单中,您可以选择在解决方案中运行单个单元测试或所有测试。很酷的是,它的键盘快捷键是:

      • Alt + R, U, R - 从当前上下文运行测试(如果您处于 [Test] 级别,它会运行一个测试,如果您处于 [TestFixture] 级别,它会在夹具中运行所有测试!)
      • Alt + R、U、N - 运行解决方案中的所有单元测试

      我强烈建议您卸载您当前的 Gallio,然后检查 C:\Program Files\Jetbrains\Resharper\plugins\bin 并清除其中的文件。然后重新安装 Gallio。

      完成此操作后,您应该启动 VS2008 并转到 Resharper |插件菜单检查 Gallio 插件是否处于活动状态。这将为您提供对 MbUnit 的支持。

      【讨论】:

        猜你喜欢
        • 2016-05-20
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        • 2018-01-12
        • 2014-01-03
        • 1970-01-01
        • 1970-01-01
        • 2022-06-20
        相关资源
        最近更新 更多