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), вы можете решить проблему, просто удалив два файла.