0

如何让 NCrunch 在后台运行测试时停止启动 DiffReporter,但在手动运行测试时轻松获取 DiffReport?

我一直试图让它工作一段时间,但我尝试过的任何组合都没有给我我正在寻找的结果。我目前正在将该[UseReporter(typeof(DiffReporter))]属性注释掉。当测试开始失败时,我会回来并取消注释,直到我解决问题,然后将其注释掉,但这对于具有多个[TestCase]. 从我在 ApprovalTests 博客上阅读的内容来看,这似乎应该是可能的。

我的 diff 软件是 Beyond Compare,我的代码目前如下所示:

测试项目/AssemblyInfo.cs

[assembly: UseReporter(typeof(NCrunchReporter))]

测试项目/ClassTests.cs

public class ClassTests
{
    [Test]
    //[UseReporter(typeof(DiffReporter))]
    [TestCase(1, 1)]
    [TestCase(1, 2)]
    [TestCase(2, 1)]
    [TestCase(3, 1)]
    public void TestCase(int errorNumber, int )
    {
        using (ApprovalResults.ForScenario(errorNumber, testCaseSubtestNumber))
        {
            var results = DoSomething();

            Approvals.Verify(results);
        }
    }
}

更新:
我正在使用以下 NuGet 包:
- ApprovalTests v3.0.11
- ApprovalUtilities v3.0.11
- NUnit v3.2.1

4

1 回答 1

2

它应该是默认行为。你想要的实际代码是

[assembly: FrontLoadedReporter(typeof(NCrunchReporter))]

但是 NcrunchReporter 是 DefaultFrontLoadedReporter 的一部分。如果检测到情况,这些记者会走到您使用的任何记者面前并阻止。

也许NCrunch已经改变了。您可以尝试通过 NCrunch 运行它并报告结果吗

Approvals.SetCaller();
Assert.IsTrue(NCrunchReporter.INSTANCE.IsWorkingInThisEnvironment("a.txt"));

应该是真的,如果不是 NCrunch 已更改,我们将需要相应地更新报告器。

于 2016-07-15T20:52:05.030 回答