Есть ли способ заставить Maven Surefire или JUnit указывать имя класса с ошибками при выполнении из Test Suite? - PullRequest
5 голосов
/ 17 мая 2011

Мой вопрос: есть ли способ заставить Maven Surefire (или JUnit?) Указывать имя тестового класса, который не прошел тест, когда этот класс был выполнен из набора тестов?

Теперь long story.

Представьте, что у вас есть набор тестов JUnit, который запускает два теста JUnit.

Примеры классов тестов:

public class TestOne {

    @Test
    public void foo() {
        assertTrue(false);
    }

    @Test
    public void bar() {
        assertTrue(false);
    }

}

@UnitTest
public class TestTwo {

    @Test
    public void foo() {
        assertFalse(true);
    }

}

и набор тестов:

@RunWith(Suite.class)
@SuiteClasses(value = { TestOne.class, TestTwo.class })
public class MySuite {

}

Теперь, если я запущу набор тестов (mvn test -Dtest=MySuite), у меня будут следующие ошибки:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running caf.opm.preclosing.junit.MySuite
Tests run: 3, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec <<< FAILURE!

Results :

Failed tests:
  foo(my.project.junit.TestOne)
  bar(my.project.junit.TestOne)
  foo(my.project.junit.TestTwo)

Tests run: 3, Failures: 3, Errors: 0, Skipped: 0

Итак, читая эти строки, я легко могу определить, какиеклассы и тесты не выполняются.

Однако в каталоге target/surefire-reports/ у меня есть только один файл, MySuite.txt, где три теста не пройдены.Одним из последствий такой ситуации является то, что моя сборка Hudson покажет мне следующую информацию:

All Failed Tests
Test Name       Duration    Age   
>>> my.project.junit.MySuite.foo    0.0 1
>>> my.project.junit.MySuite.bar    0.0 1
>>> my.project.junit.MySuite.foo    0.0 1

Как видите, становится труднее идентифицировать провальные тесты, например, как TestOne.foo()и TestTwo.foo() не удалось, я увидел две MySuite.foo ошибки в моем отчете JUnit.Конечно, я могу получить имя тестового класса, прочитав журналы неудачного теста, но это не совсем решение ...

Поэтому мой вопрос заключается в том, чтобы узнать, могу ли я принудительно использовать Surefire (или JUnit?), чтобы указать название тестового класса.

Спасибо.

1 Ответ

0 голосов
/ 02 марта 2012

Я получаю по одному файлу на каждый тестовый класс, поэтому мне потребовалось время, чтобы понять это: вы используете набор тестов.

При использовании комплектов тестов все результаты теста заканчиваются в одном файле с именем комплекта.

Нет возможности изменить это поведение. Попробуйте подать запрос на добавление .

...