Дополнительная регистрация 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())
..
Другие вопросы по тегам