Не считываются аннотации Yandex.Allure перед тестовыми методами

java
maven
junit
allure
selenium
Теги: #<Tag:0x00007fedb740bd50> #<Tag:0x00007fedb740bc10> #<Tag:0x00007fedb740bad0> #<Tag:0x00007fedb740b990> #<Tag:0x00007fedb740b828>

(Eugene Moskalenko) #6

Таки да, чуть позже я там пересмотрел свое мнение по данному поводу… Больше похоже все же на бажинку, вы все очень даже правильно сделали.


(Сергей Слётов) #7

Добрый день,

А может быть такое, что дело в функциях которые используются для проверки (в вашем примере verifyTextEquals, у меня assert-ы)?
Заменил на 1.4.23, вот что получилось:

Т.е. по сути ничего не изменилось.

А про это можно подробнее? Что значит “разворачиваете тест в отчете”?


(Eugene Moskalenko) #8

по первому вопросу - нет это не из-за этого, мои verifyText, выглядит так, по сути обертка:

@Step("Verify that \"{0}\" contains \"{1}\"")
default void verifyTextContains(final String actual, final String containsString) {
    assertTrue(actual.contains(containsString));
}

Странненько, интересная задачка :slight_smile: Ваш тестовый метод - это testMethod1. А у вас в отчетах:

[0] 1, USD (test method 1)
  1. Уберите:

     @Step("{0} for {1}")
    

    это же у вас идет тестовый метод с аннотацией @Test, зачем вам там @Step?

  2. Вы можете данный тест сделать таким, чтобы у него не было параметризации + запустить его и построить отчет и показать, что бует в отчете?

  3. И еще приложите пожалуйста свой pom.xml, поглядеть… Хотя вряд ли там что-то с pom.xml не так, только что развернул проект у себя с jUnit + Allure https://github.com/allure-examples/allure-junit-example, добавил туда ваши аннотации и все ок, правда там без параметризации, как у вас.

по второму вопросу - для того, чтобы развернуть тестовый метод в отчете надо нажать сюда - http://take.ms/AGR6S


(Eugene Moskalenko) #9

Супер, разобрался, смотрите, обратите внимание на @Title(“Title 1”)

@Severity(SeverityLevel.CRITICAL)
@TestCaseId("A")
@Title("Title 1")
@Description("Check Description 1")
@Step("{0} for {1}")
@Test
public void simpleTestWithSteps1() throws Exception {
    assertThat(2, is(2));
}

А здесь у нас @Title(“Title 2”) + такая же параметризация, как и у вас - @Parameters({“1, 2”, “2, 2” }) - https://github.com/Pragmatists/junitparams/wiki/Quickstart

@Severity(SeverityLevel.CRITICAL)
@TestCaseId("B")
@Title("Title 2")
@Description("Check Description 2")
@Step("{0} for {1}")
@Test
@Parameters({"1, 2", "2, 2" })
public void simpleTestWithSteps2(int first, int second) throws Exception {
    assertThat(first, is(second));
}

Заметили разницу? А теперь смотрите на отчет:

P.S. Кстати, в тестовом методе аннотация @Step("{0} for {1}") - не нужна.


(Сергей Слётов) #10

Да, без параметризации у меня тоже работает, но мне нужно именно с параметризацией через csv)

Теперь проблема в другом, если один из тестов фейлится, то Maven выдает следующее:


T E S T S

Running ConverterTest
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 15.513 sec <<< FAILURE!
testMethod1_spec1(ConverterTest) Time elapsed: 5.01 sec <<< FAILURE!
org.junit.ComparisonFailure: failed expected:<[USD]> but was:<[RUB]>
at org.junit.Assert.assertEquals(Assert.java:115)
at ConverterTest.testMethod1_spec1(ConverterTest.java:74)

Results :

Failed tests:
ConverterTest.testMethod1_spec1:74 failed expected:<[USD]> but was:<[RUB]>

Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.043 s
[INFO] Finished at: 2016-07-01T15:56:12+03:00
[INFO] Final Memory: 11M/155M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.14:test (default-test) on project converter-testing: There are test failures.
[ERROR]
[ERROR] Please refer to C:\Users\Серг\IdeaProjects\converter-testing\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Process finished with exit code 1


(Eugene Moskalenko) #11

Ну все правильно, билд фейлиться, потому что автотест отловил ошибку и отписал об этом:

Results :

Failed tests: 
ConverterTest.testMethod1_spec1:74 failed expected:<[USD]> but was:<[RUB]>

Вам надо либо так запускать:

mvn clean test

после всего теста еще сгенерировать отчет:

mvn site

оно тогда сгенерит отчет и в отчете покажет ошибки найденные в процессе тестирования

Либо указать параметр в pom.xml:

<testFailureIgnore>true</testFailureIgnore>

добавить его надо сюда:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>${maven-surefire-plugin.version}</version>
   <configuration>
     <testFailureIgnore>true</testFailureIgnore>
   </configuration>
</plugin>

Советую еще тогда прочесть вот эту тему - Allure, Jenkins и необходимость фейлить джобу с упавшим тестом


(Сергей Слётов) #12

То есть, нет никакого способа задать заголовки и прочее описание, для параметризованных тестов?


(Сергей Слётов) #13

Для замены Title можно использовать JUnit аннотацию @TestCaseName(“Case_{index} for {0} with {1}”)


(Eugene Moskalenko) #14

Для параметризированных у меня в TestNG работает все идеально)


(Sergey Korol) #15

Уже смерджили фикс, так что можете пересобирать проект и использовать стандартную алюровскую аннотацию.


(Eugene Moskalenko) #16

@S_e_rgej, ваш вопрос решился? Поняли в чем проблема и почему у вас не работали аннотации?


(Сергей Слётов) #17

А какие версии следующих групп и артефактов нужно использовать?:

     <groupId>ru.yandex.qatools.allure</groupId>
     <artifactId>allure-junit-adaptor</artifactId>

     <groupId>ru.yandex.qatools.allure</groupId>
     <artifactId>allure-maven-plugin</artifactId>

(Sergey Korol) #18

Ну так если вы хотите последний билд с фиксом, вам надо самим пересобрать Allure. А там уж, какую версию укажите, так и будет.

Касательно плагина - 2.5 последняя. Но чтобы он подтянул ваш репорт, ему нужно явно в конфигурации указать новую версию алюра.


(Сергей Слётов) #19

Можно поподробнее:

Как я понял, последняя версия мавен-плагина пофиксена? Или адаптора для junit?
Пересобирать надо плагин или адаптор? Или и то, и то?
И в этом ключе, какие версии нужно использовать адаптора и плагина?

И на сколько я заметил, в фиксе говорится только о @Title, но остальные аннотации например @Severity ) Allure так же не срабатывают. И ничего не говорится про параметризацию.


(Eugene Moskalenko) #20

На примере выше, я показал, что на jUnit все срабатывает, если не использовать параметризацию.


(Sergey Korol) #21

Вы немного путаетесь в структуре по всей видимости.

Allure - многомодульный фреймворк, который включает в себя в том числе и junit-adaptor. Вам нужно пересобрать весь проект. Версию можно указать в pom при сборке, либо оставить имеющийся SNAPSHOT.

Плагин является вообще отдельным проектом. Его не нужно пересобирать. Но для того, чтобы он вам не стянул официально последнюю версию 1.5.0.RC2 основных артефактов, нужно явно указать ту, что вы собираетесь использовать (фактически пересобранную).

К примеру:

<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>2.5</version>
<configuration>
    <version>1.4.24-SNAPSHOT</version>
</configuration>

П.С. С остальными аннотациями, насколько мне известно, никаких проблем нет.


(Сергей Слётов) #22

В посте выше я уже писал, что нужно именно с параметризацией.


(Сергей Слётов) #23

Спасибо, разберусь и сделаю.

П.С. выставляю @Severity(SeverityLevel.CRITICAL) перед тестом, но результат:


(Eugene Moskalenko) #24

Ну наверное с такой реализацией параметризации не выйдет, для параметризации на TestNG (стандартная параметризация) - подобных проблем нет…


(Sergey Korol) #25

Заводите Issue с шагами для воспроизведения. Я с JUnit не работаю. А вот разработчики Allure все сидят на нем. Так что если проблема действительно есть, думаю, быстро пофиксят.