ApprovalTests.... Перемещение сборок после компиляции

Прежде всего, отличная библиотека!

Если я компилирую, то перемещаю сборки, когда проверяю, что он все еще ищет *.approved.txt в месте, в котором он был скомпилирован, который в моем случае больше не существует.

Я сталкиваюсь с этой проблемой в Teamcity, где мы создаем и тестируем отдельные задачи. Таким образом, шаг сборки будет построен в c:\BuildAgent\SomeGuid... Я беру артефакты из сборки и запускаю тесты в c:\BuildAgent\SomeOtherGuid... Это не выполняется как утверждения. Проверка по-прежнему ссылается на "SomeGuid"

[Fact]
public void ShouldCreateCorrectOutgoingFiles() {
    var textToVerfiy = "Here's some text To Verify";
    Approvals.Verify(textToVerfiy);
}

...

: System.IO.DirectoryNotFoundException : Could not find a part of the path 'r:\w\254cbbd5ec9b56bc\project\ScenarioTests\myTests'.
Stack Trace:
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at ApprovalTests.ApprovalTextWriter.WriteReceivedFile(String received)
   at ApprovalTests.Approvers.FileApprover.Approve()
   at ApprovalTests.Core.Approvals.Verify(IApprovalApprover approver, IApprovalFailureReporter reporter)
   at ApprovalTests.Approvals.Verify(IApprovalWriter writer, IApprovalNamer namer, IApprovalFailureReporter reporter)
   at ApprovalTests.Approvals.Verify(IApprovalWriter writer)
   at ApprovalTests.Approvals.Verify(String text)

Любые идеи о том, как я могу настроить его, чтобы посмотреть в относительной директории к исполняемому файлу.

1 ответ

Решение

Вы должны написать собственное имя. Это довольно легко. Посмотрите на эти файлы.

http://bit.ly/IApprovalNamer

http://bit.ly/XUnitStackTraceParser

http://bit.ly/AttributeStackTraceParser

Как только вы это сделаете, вам придется зарегистрировать имя пользователя для использования, для этого просто позвоните.

Approvals.RegisterDefaultNamerCreation(()=> new MyCustomNamer());
Другие вопросы по тегам