Создайте репортера, а не используйте IApprovalFailureReporter
, реализуйте IReporterWithApprovalPower
. IReporterWithApprovalPower
имеет дополнительный метод, 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))]
Вы бы никогда не захотели сделать это, не понимая, что происходит. Но скажем, вы сделали кучу рефакторинга, и модульные тесты переместились. У вас их тысячи. Вы знаете, что логика модульных тестов не изменилась. Они просто в разных именах классов и пространства имен. Вместо того, чтобы проходить через 1000 файлов и выяснять, куда они идут, вы можете просто удалить все файлы assert.txt и восстановить их. Если инструменты рефакторинга, которые перемещают методы и классы вокруг, понимают об этих дополнительных файлах, это не нужно делать. – zumalifeguard
Я использую этот тип репортера, чтобы все одобрить. Мой рабочий процесс включает в себя изменение производственного кода и выполнение тестов, автоматически одобряющее все. Затем, прежде чем я завершу проверку, проверьте diff в коде AND. Approved files с помощью 'git diff HEAD --ignore-space-at-eol --ignore-space-change' (с псевдонимом для краткости). Довольно быстро, когда у вас есть аккумулятор одобренных файлов. –