5

我正在使用 ApprovalTests.Net。我看到我可以指定各种报告。我想在运行单元测试时自动批准测试。我只需要暂时这样做,或者在代码发生重大更改时这样做。这在使用 ApprovalResults.ForScenario 创建数据驱动的 ApprovalTests 时特别有用。

有没有办法做到这一点?

4

3 回答 3

7

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

这是一个示例报告器,它将自动将收到的文件复制到批准的文件中:

// Install-package ApprovalTests 
// Install-package ObjectApproval
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))] 
于 2016-06-03T00:45:30.200 回答
1

这让我觉得这是一个非常糟糕的主意。如果您使用ClipboardReporter, 或者AllFailingTestsClipboardReporter您可以通过将它们粘贴到命令行来批准它们,但是在不检查或理解它们为什么更改的情况下自动批准似乎会破坏测试的所有优势。

你为什么想做这个?

于 2016-06-03T19:06:11.573 回答
0

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

于 2021-06-17T22:32:34.220 回答