ApprovalTests.Net を使用しています。いろいろなレポートを指定できることがわかりました。単体テストを実行するときにテストを自動的に承認したいと考えています。これを行う必要があるのは、一時的か、コードが大幅に変更されたときだけです。これは、ApprovalResults.ForScenario を使用してデータ駆動型の ApprovalTests を作成する場合に特に役立ちます。
それを行う方法はありますか?
ApprovalTests.Net を使用しています。いろいろなレポートを指定できることがわかりました。単体テストを実行するときにテストを自動的に承認したいと考えています。これを行う必要があるのは、一時的か、コードが大幅に変更されたときだけです。これは、ApprovalResults.ForScenario を使用してデータ駆動型の ApprovalTests を作成する場合に特に役立ちます。
それを行う方法はありますか?
レポーターを作成しますが、実装するのではなくIApprovalFailureReporter
、実装しIReporterWithApprovalPower
ます。 テストを承認する作業を行うことができるIReporterWithApprovalPower
追加のメソッドがあります。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))]
これは非常に悪い考えだと思います。を使用する場合ClipboardReporter
、またはAllFailingTestsClipboardReporter
コマンド ラインに 1 回貼り付けるだけでそれらを承認できますが、変更された理由を確認または理解せずに自動承認すると、テストのすべての利点が無効になるようです。
なぜこれをしたいのですか?