【问题标题】:NUnit debugging a single testNUnit 调试单个测试
【发布时间】:2012-04-01 01:31:50
【问题描述】:

我使用 ReSharper 的 NUnit 插件。我找不到任何调试单个测试的方法。 BUG 按钮总是会启动所有测试,即使我专门从一种测试方法启动调试也是如此。

我正在尝试通过一项特定测试达到断点,但我不想通过其他测试达到断点。

你知道有什么方法吗? Google 在这方面没有帮助我...

我的测试代码示例

[Test]
public void IsValidDoer_DoerValid()
{
    var mockRepositoryDoer = new Mock<IDoerRepository>();
    mockRepositoryDoer.Setup(c => c.ActiveDoers).Returns(activeDoers.AsQueryable);

    var doerValidation = new DoerValidation(mockRepositoryDoer.Object);

    Assert.IsTrue(dModel.IncludedDoers.Any());
}

[Test]
public void IsValidDoer_DoerInvalidNoQuota()
{
    var mockRepositoryDoer = new Mock<IDoerRepository>();
    var activeDoers = listDoers.ToList();
    activeDoers.First().QuotaActivity.Clear();
    mockRepositoryDoer.Setup(c => c.ActiveDoers).Returns(activeDoers.AsQueryable);

    var doerValidation = new DoerValidation(mockRepositoryDoer.Object);

    Assert.IsFalse(dModel.IncludedDoers.Any());
}

【问题讨论】:

  • 请发布您的测试代码,我需要看看测试的结构。
  • 我只是用同一个实体调用同一个方法。我测试了方法中使用的实体属性的不同值。不过,它可能也可以进行相同的测试。我用一些代码编辑
  • 刚刚安装了最新版本的 resharper 和所有其他东西,这种行为似乎已经改变!您只能调试 1 个测试,并且覆盖不会让我的测试再失败,测试通常在正常模式下通过,但由于某些非常奇怪的原因过去常常因覆盖而失败......

标签: c# debugging nunit resharper


【解决方案1】:

是的,代码旁边是一个绿色和黄色标记,只需单击它并单击运行,它将运行该单个测试。一旦获得选项,您只需左键单击它,根据您还从 Jetbrains 安装的内容,您也可以从此处启动代码覆盖。

您还可以选择将其附加到其他测试的现有会话中,或在会话中单独创建它。

澄清:

有人对此表示反对,所以我回去查看并测试了 MSTEST 和 NUnit。确实,如果您只想调试一个,则不希望执行 15 个测试。该测试是在 Visual Studio 2015 中使用 Resharper 10 和 Visual Studio 2013 中使用 Resharper 8 进行的。如果单击单个测试文件中的标记,它实际上只会运行一次代码。

如果您运行多个测试并在 Resharper 的运行器中获得一个包含三个测试的测试会话,右键单击时,它将显示“调试测试”,但是如果您只选择一个,它只会运行一个测试,因此只能点击代码一次。

【讨论】:

  • 是的,但如果我运行测试,它不会在断点处停止。我必须使用 DEBUG 选项才能调试测试。
  • 这是正确的,然后它的行为方式相同,或者至少对于我拥有的每个版本的 resharper 都有。这种行为是设计使然。
  • 附加到另一个会话确实隔离了单元测试,所以你的建议绝对是可能的!
  • 当您在同一个会话中运行其他测试时,您是否担心所有其他东西都在运行?我同意它可能看起来是这样,但如果您注意到滴答声只是通过运行的东西。 . 它不如新会话干净,但如果您只单击一次,它肯定不会同时运行其他测试,您使用哪个版本?
  • 我更担心的是15个测试会通过相同的代码,当我在我的代码中(而不是在测试中)设置断点时,断点会达到15次。我只想在我失败的测试中达到它。因此,我只需要调试一个失败的测试。我的解释清楚了吗?
【解决方案2】:

我有同样的问题。当尝试通过单击圆圈并选择“调试(错误图标)”来调试单个测试时,它将为所有单元测试进行调试。

我通过升级 Resharper 解决了这个问题。我从 Resharper Ultimate 10.0.1 升级到 10.0.2。

【讨论】:

    【解决方案3】:

    我们在使用 ReSharper 10 作为测试运行器时也遇到了同样的问题。即使我在会话中只配置了一个测试,它也会运行所有测试。此外,当我在此测试中右键单击测试球时,它会运行所有测试。

    在 Tools->Extensions and Updates->Online 下安装 NUnit3 Test Adapter 后,我可以通过右键单击从 Visual Studio 2015 的常规测试资源管理器中调试测试并选择调试选定的测试。这只会运行这一项测试:)

    【讨论】:

    • 我非常喜欢 resharper 测试会话窗口以及封面功能,但是,NUnit3 测试适配器让我一次只能调试 1 个测试,如果我愿意,那就是我会去的。感谢您的回答。
    • 也有这个问题。一定是 Resharper 的错误?我调试测试的方法是右键单击测试方法“public void Test...”,然后单击“Debug Tests”。值得庆幸的是,这只调试了一个测试,而不是全部。
    • 我尝试了更新,但由于某种原因没有成功。对我来说,只有 Ctrl-R+T 有效。真的很奇怪,但至少现在可以了。
    【解决方案4】:

    尝试右键单击特定测试的代码。您应该在上下文菜单中看到“调试单元测试”或类似内容。

    【讨论】:

    • 上下文菜单中是调试单元测试,所以从那里实现不了多少。
    • 是的,它为所有测试运行调试
    猜你喜欢
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多