ApprovalTests DiffReporter не появляется окно diff, если инструмент diff не открыт

Недавно у меня возникла проблема с ApprovalTests, когда инструмент сравнения (в моем случае BeyondCompare 3; у меня есть сотрудник с той же проблемой, использующей WinMerge) вспыхивает, а затем сразу же закрывается. Единственный способ сохранить инструмент открытым - это открыть инструмент перед запуском тестов.

Я использую ApprovalTests 3.6; Я знаю, что эта проблема существовала и в предыдущей версии.

Метод, вызывающий Verify, довольно прост:

    [UseReporter(typeof(DiffReporter))]
    protected void VerifyTables(IEnumerable<DataTable> tables, bool showSchema = false)
    {
        Approvals.VerifyAll(tables.Select(t => GetXmlForApproval(t, showSchema).ToString()), "");
    }

Что касается BeyondCompare - у меня была эта проблема с сравнениями TFS в Visual Studio, и это было связано с тем, что TFS был настроен для вызова BCompare.exe вместо BComp.exe. Итак, я попытался сделать пользовательскую реализацию BeyondCompareReporter который вызывает BComp.exe вместо BCompare.exe, но использование этого не имеет значения в этом случае.

2 ответа

Решение

Проблема здесь в том, что некоторые участники модульных тестов принудительно закрывают (завершают) все процессы, запущенные модульным тестом после его завершения. Причина, по которой BeyondCompare работает, если ранее был открыт, заключается в том, что процессы не были запущены с помощью модульного теста.

Я видел, как это произошло в 2 основных
1) Тесты запускаются через некоторые версии Resharper.
Способ решить эту проблему, похоже, состоит в том, чтобы просто перейти на последнюю версию Resharper. В качестве альтернативы вы можете запустить тест через тестер VisualStudio.

2) Тестовый запуск через некоторую версию файла настроек теста .runsettings для MsTest
Похоже, что работа здесь заключается в том, чтобы просто удалить файл настроек теста, хотя я считаю, что фактическая строка

KeepExecutorAliveAfterLegacyRun

Больше на: http://msdn.microsoft.com/en-us/library/jj635153.aspx

Если у вас есть файлы.vsmdi и.testrunconfig (из Visual Studio 2008), вы можете решить проблему, просто удалив два файла.

Другие вопросы по тегам