У меня есть более простое и быстрое решение для вас. Не нужно кодировать. Это то, что вы делаете:
Я использую Windows Command Line/.BAT-файл и Maven для этого.
В ЦМД, создать свою собственную переменную штамп времени, такие как:
set mytimestamp=%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%%time:~6,2%
затем
echo %mytimestamp%
выход должен быть что-то вроде этого
20162710_122305
Не забудьте указать «/» или «белые пробелы» в вашем формате. Это может привести к неожиданной иерархии папок, что, скорее всего, приведет к сбою сборки.
Чтобы передать это ваш serenity.outputDirectory
просто делать (в Maven)
mvn test -Dserenity.outputDirectory=target/site/report_%mytimestamp%
и это то, что вы получите
* Учтите, что если вы запустите mvn clean
он будет вытирать все ваши отчеты. Кроме того, это не навсегда перезаписывает свойство вашего проекта serenity.outputDirectory
. Если вы НЕ использовали -Dserenity.outputDirectory=target/site/report_%mytimestamp%
, то свойство будет по умолчанию использовать любое значение, имеющееся в вашем проекте.
Это то, что .bat файл будет выглядеть
set mytimestamp=%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%%time:~6,2%
call mvn test -Dserenity.outputDirectory=target/site/report_%mytimestamp%
Использует тесты прочь приложений ограждающие, возможно, Дженкинс? Если это так, вы можете настроить шаг предварительной сборки, чтобы переопределить свойство 'serenity.outputDirectory'. Если нет, я бы написал короткий скрипт, чтобы переопределить его (на основе текущей метки времени) и запустить его сначала в пакетном режиме с помощью тестовой среды. Другая возможность заключается в том, чтобы либо установить свои методы @Before, либо @After, однако это звучит как плохая практика. – JDelorean
Я не использую Дженкинса. JD. Принимая во внимание это, я бы написал короткий скрипт, чтобы переопределить (на основе текущей метки времени) его и запустить его сначала в пакетном режиме с помощью тестовой среды. Мои тесты в формате «Дано», «Далее». поэтому, где вы предлагаете поместить код для переопределения файла serenity.outputDirectory. Также вы можете указать строку кода, которую мы можем использовать для переопределения файла serenity.outputDirectory. – azeem