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

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

Добрый день,

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

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

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

по первому вопросу - нет это не из-за этого, мои 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 GitHub - allure-examples/allure-junit-example: Example of usage Allure Report with JUnit and Maven, добавил туда ваши аннотации и все ок, правда там без параметризации, как у вас.

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

Супер, разобрался, смотрите, обратите внимание на @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}”) - не нужна.

Да, без параметризации у меня тоже работает, но мне нужно именно с параметризацией через 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] MojoFailureException - Apache Maven - Apache Software Foundation

Process finished with exit code 1

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

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 и необходимость фейлить джобу с упавшим тестом

2 лайка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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>

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

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

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

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

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

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