Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Сделать красивый текст ошибки при падении степа

cucumber
junit
webdriver
Теги: #<Tag:0x00007f7b6d599bc0> #<Tag:0x00007f7b6d5999e0> #<Tag:0x00007f7b6d599828>

#1

ЗДравствуйте, есть тесы на Java+WebDriver+Cucumber которые автоматически загружают ТС из джири и туда же заливают репорт. Когда тест падает вываливается примерно такой текст ошибки:

java.lang.AssertionError: CAF is not displayed 
at org.junit.Assert.fail(Assert.java:88)
at StepDefinitions.cafsAreOpened(StepDefinitions.java:105)
at ✽.Then CAFs are opened(test.feature:10)

Тестировщики начинают бить панику что ничего не понятно в ошибке, как сделать что бы тест падал только с нужной фразой и без стактрейса ?


(Bolatbek) #2

К ассерту можно добавлять комментарий. Я так думаю (ассерты джавовские не знаю).
как пример в JS:

assert.isTrue(bool, "описание - что мы ждали и что не получили");

#3

У меня так и написано

Assert.fail("Contracts tab is not displayed");

(Bolatbek) #4

Ну тогда лучше выделить текст ошибки и сказать, чтобы на остальное не смотрели:

Assert.fail("Test failed::Contracts tab is not displayed\n\n");

Что-то типа такого. И два отступа ))


(Bolatbek) #5

Но в целом - глупо. Что за тестировщики у вас пугливые? Проведите обучение, на что смотреть, на что НЕ смотреть.


#6

Сложно… нужно что бы была 1 строчка где написано всё по существу.


(Sergey Korol) #7

Угу, а потом попросят, чтобы тест еще за них root cause analysis провел. Да что уж мелочиться, сразу баг в Jira с установленным severity пусть заводит.


(Alexander) #8

Далеко не всегда об ошибках вам скажет AssertionError, зачастую причина падения теста кроется в самом неожиданном месте с неожиданным эксепшном и следовательно неожиданным текстом сообщения. На каждую строку кода сообщения не подготовишь. Потому нет никакого смысла пытаться объять необъятное. Тем более ради хотелок ленивых тестировщиков. Я еще понимаю когда клиент паникует…

С другой стороны, находчивый человек всегда найдет выход. Можно шоры на весь отдел закупить. Приспособить так, чтобы когда смотришь под определенным углом, только первая строка стектрейса видна была.


#9

После моих страданий стало немного похоже на читаемое, но в тестах это использовать - себя не уважать.
Вот стекстрейс;


MyException
at .(CAF NOT DISPLAYED:0)
at ✽.Then CAFs are opened(test.feature:10)

А вот код этого чудаюда

public class MyException extends Throwable {
    public synchronized Throwable fillInStackTrace(){
this.setStackTrace(new StackTraceElement[]{new StackTraceElement("","","CAF NOT DISPLAYED",0)});
        return this;
    }

}

Ну как вы сами видите текст можно будет и самому передавать, но как для меня так ошибку стало сложнее читать, та и везде свои ексепшены всовывать тот еще геморрой будет.


(Taras) #10

у нас в JBehave я делал парсер exception-ов, при помощи ExceptionUtils Apache commons - там можно много инфи полезной достать