当仅选择单个测试时,Resharper运行所有测试

时间:2009-07-10 16:15:19

标签: unit-testing resharper mbunit

我正在使用Resharper 4.5和Visual Studio 2008以及MBUnit测试,使用ReSharpher运行测试似乎有些奇怪。

在侧面,每个测试方法旁边都有图标,其中包含Run和Debug选项。当我选择Run它时,只显示单次测试的结果。但是我注意到测试需要相当长的时间才能运行。

当我运行Sql Server探查器并开始逐步执​​行代码时,我意识到它不只是运行所选的测试,而是运行类中的每一个。是否有任何理由让它看起来像只运行一个单元测试而实际运行它们?

当我只关心一个集成测试的重新运行时,等待所有集成测试运行的痛苦,有没有办法改变它?

5 个答案:

答案 0 :(得分:5)

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

    [TestMethod]
    public void TestSomething()

    [TestMethod]
    public void TestSomethingPart2()

我看到运行TestSomething()会同时运行,但运行TestSomethingPart2()则不会。我总结了如果你命名的方法,它将运行测试的方法名称可以发生完全匹配。将我的第二次测试重命名为TestPart2Something后,此问题就消失了。

答案 1 :(得分:5)

我可以确认这是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。 解决方法是没有以另一个测试方法名称开头的测试方法名称。

答案 2 :(得分:3)

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

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

[TestMethod()]
public void ArchiveAccountTest()

[TestMethod()]
public void ArchiveAccountTestRestore()

因此,运行第一个方法将执行两个并且运行第二个方法不会。将我的第二个方法重命名为TestRestore,问题就消失了。

注意:我正在使用Resharper 5.1,所以它仍然是一个问题。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

当前版本的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的支持。