Возникла задача. Использую Approval testing в тестировании. Очень удобная тула. Кому интересно - смотрим тут.
В процессе работы с этим фреймворком, когда тесты проходят - создаются файлы с именем <testclass>.<testname>.approve.txt - эти файлы содержат строку, которую мы в конце теста скормили фреймворку, чтобы он ее заапрувил. На самом деле аппрувлю ее я, и когда я аппрувлю строку - она попадает в *.approve.txt файл. Это такой себе аналог assertEqials в jUnit, только зачение expected сохраняется в отдельный файл после того, как я его заапрувлю.
Но в момент когда тест слетает, рядом создается другой файл *.received.txt и в него записывается информация о том, что реально пришло от тестируемого модуля. Мне же после отработки тестов запускается ряд (для каждого слетевшего теста) окон Tortoise diff и могу сравнить их и выбрать правильный. Такой способ принятия решений более удобный чем орудовать со строками в assertEquals.
Пример использования такой - я вдруг решил что хочу чтобы не "?" выводились, а "." причем от этого зависит пяток тестов. Что делать? Ручками править все assertEquals? Неее...
Переписывать мне ассерт пришлось бы в тесте очень долго, а тут я кликаю одну кнопку и файл approve обновляется.
Беда, когда я что-то меняют и слетает пару десятков тестов. Тогда не очень удобно 20 раз кликать на кнопку "сохранить", особенно если я знаю, что новое изменение - ок. Итого у меня есть пары файлов *.approve.txt и *.received.txt и я хочу удалить все старые аппрувы и заменить их новыми received.
Мне в этом поможет простой bat file. Вернее не простой, а такой
Последняя команда очень интеерсна - ее формат s:~a,b, где s - строка, a и b - позиции символов в строке. В результате мы получим подстроку начинающуюся с символа под номером а (нумерация начинается с 0) и длинной b. Но это, если a и b имеют положительные значения. Если же указать только s:~-a, то команда выкусит только a последних символов. Если же s:~a,-b, то выкусит подстроку начиная с a-того и до конца за вычетом b последних символов.
Пару примеров для понимания
В процессе работы с этим фреймворком, когда тесты проходят - создаются файлы с именем <testclass>.<testname>.approve.txt - эти файлы содержат строку, которую мы в конце теста скормили фреймворку, чтобы он ее заапрувил. На самом деле аппрувлю ее я, и когда я аппрувлю строку - она попадает в *.approve.txt файл. Это такой себе аналог assertEqials в jUnit, только зачение expected сохраняется в отдельный файл после того, как я его заапрувлю.
Но в момент когда тест слетает, рядом создается другой файл *.received.txt и в него записывается информация о том, что реально пришло от тестируемого модуля. Мне же после отработки тестов запускается ряд (для каждого слетевшего теста) окон Tortoise diff и могу сравнить их и выбрать правильный. Такой способ принятия решений более удобный чем орудовать со строками в assertEquals.
Пример использования такой - я вдруг решил что хочу чтобы не "?" выводились, а "." причем от этого зависит пяток тестов. Что делать? Ручками править все assertEquals? Неее...
Переписывать мне ассерт пришлось бы в тесте очень долго, а тут я кликаю одну кнопку и файл approve обновляется.
Беда, когда я что-то меняют и слетает пару десятков тестов. Тогда не очень удобно 20 раз кликать на кнопку "сохранить", особенно если я знаю, что новое изменение - ок. Итого у меня есть пары файлов *.approve.txt и *.received.txt и я хочу удалить все старые аппрувы и заменить их новыми received.
Мне в этом поможет простой bat file. Вернее не простой, а такой
@echo off setlocal enableDelayedExpansion for %%F in (*.received.txt) do ( set "name=%%F" move /Y "%%F" "!name:~0,-13!.approved.txt" )Расшифрую немного его. Мы проходимся по всем файлам *.received.txt, зносим ихние имена по очереди в переменную name. После чего выполняем команду move /Y, что значит мы хотим переместить с заменой файл с исходным именем %%F на файл сформированный в "!name:~0,-13!.approved.txt".
Последняя команда очень интеерсна - ее формат s:~a,b, где s - строка, a и b - позиции символов в строке. В результате мы получим подстроку начинающуюся с символа под номером а (нумерация начинается с 0) и длинной b. Но это, если a и b имеют положительные значения. Если же указать только s:~-a, то команда выкусит только a последних символов. Если же s:~a,-b, то выкусит подстроку начиная с a-того и до конца за вычетом b последних символов.
Пару примеров для понимания
D:\>set var=abcdefghijklmnopqrstuvwxyz0123456789.someext D:\>echo %var:~0,5% abcde D:\>echo %var:~1,5% bcdef D:\>echo %var:~1,8% bcdefghi D:\>echo %var:~3,8% defghijk D:\>echo %var:~-4% eext D:\>echo %var:~-9% 9.someext D:\>echo %var:~0,-1% abcdefghijklmnopqrstuvwxyz0123456789.someex D:\>echo %var:~0,-7% abcdefghijklmnopqrstuvwxyz0123456789. D:\>echo %var:~7,-7% hijklmnopqrstuvwxyz0123456789.Вроде как все...
Комментариев нет:
Отправить комментарий