运行时如何自动批准批准测试?

时间:2016-06-03 00:45:30

标签: approval-tests

我正在使用ApprovalTests.Net。我看到我可以指定各种报告。我想在运行单元测试时自动批准测试。我只需要暂时执行此操作,或者在代码经历重大更改时执行此操作。在使用ApprovalResults.ForScenario创建数据驱动的ApprovalTests时,这尤其有用。

有办法吗?

3 个答案:

答案 0 :(得分:5)

创建一名记者,而不是实施IApprovalFailureReporter,实施IReporterWithApprovalPowerIReporterWithApprovalPower有一个额外的方法ApprovedWhenReported,您可以在其中执行批准测试的工作。

这是一个示例记者,它会自动将收到的文件复制到批准的文件中:

public class AutoApprover : IReporterWithApprovalPower
{
    public static readonly AutoApprover INSTANCE = new AutoApprover();

    private string approved;
    private string received;

    public void Report(string approved, string received)
    {
        this.approved = approved;
        this.received = received;
        Trace.WriteLine(string.Format(@"Will auto-copy ""{0}"" to ""{1}""", received, approved));
    }

    public bool ApprovedWhenReported()
    {
        if (!File.Exists(this.received)) return false;
        File.Delete(this.approved);
        if (File.Exists(this.approved)) return false;
        File.Copy(this.received, this.approved);
        if (!File.Exists(this.approved)) return false;

        return true;
    }
}

然后,您可以按照指定任何批准者的方式在测试类或方法中使用它:

[UseReporter(typeof(AutoApprover))] 

答案 1 :(得分:0)

这让我觉得非常糟糕。如果您使用ClipboardReporterAllFailingTestsClipboardReporter,您可以通过一次粘贴批准它们到命令行,但要自动批准而不检查或理解它们更改的原因似乎会破坏测试的所有优势。

你为什么要这样做?

答案 2 :(得分:0)

ApprovalTests 现在支持 DiffEngineTray。 DiffEngineTray 位于 Windows 托盘中并监视所有待处理的批准。可用于批量批准、打开差异工具等