Дополнительная регистрация JBehave
Сценарий таков:
Мы используем JBehave и Selenium для системной интеграции и комплексного тестирования. Я проверяю результаты расчета на странице с более чем 20 значениями для проверки. При использовании Junit Assert весь тест завершится неудачно, если первый экземпляр одного из значений неверен. Что я хотел сделать, так это то, что если сбой утверждения встречается, то тест продолжает выполняться, так что я могу затем сопоставить все значения, которые являются неправильными в одном прогоне теста, а не в нескольких прогонах теста.
Для этого я фиксирую утверждения и записываю в файл журнала все, что не проходит проверку. Это оставило меня с парой вопросов:
1) Файл журнала, в который я записываю ошибки подтверждений, не содержит имя JBehave Story или сценария, который выполнялся при возникновении исключения.
2) JBehave Story или Сценарий указан как "Пропущен", и я хочу, чтобы он был указан как "Неудачный".
Можно ли каким-либо образом записать имя истории и сценария в дополнительный файл журнала или получить дополнительную запись в файл журнала JBehave?
Как я могу пометить историю / сценарий как проваленный?
В конфигурации JBehave у меня есть:
configuredEmbedder()
.embedderControls()
.doIgnoreFailureInStories(true)
.doIgnoreFailureInView(false)
.doVerboseFailures(true)
.useStoryTimeoutInSecs(appSet.getMaxRunningTime());
а также
.useStoryReporterBuilder(
new StoryReporterBuilder()
.withDefaultFormats()
.withViewResources(viewResources)
.withFormats(Format.HTML, Format.CONSOLE)
.withFailureTrace(true)
.withFailureTraceCompression(true)
.withRelativeDirectory("jbehave/" + appSet.getApplication())
1 ответ
Да, вы можете создать свой собственный StoryReporter:
public class MyStoryReporter implements org.jbehave.core.reporters.StoryReporter{
private Log log = ...
@Override
public void successful(String step) {
log.info(">>successStep:" + step);
}
@Override
public void failed(String step, Throwable cause) {
log.error(">>error:" + step + ", reason:" + cause);
}
...
}
и зарегистрируйте это так:
.useStoryReporterBuilder(
new StoryReporterBuilder()
.withReporters(new MyStoryReporter())
..