Мой вопрос: есть ли способ заставить Maven Surefire (или JUnit?) Указывать имя неудачного тестового класса, когда этот класс был выполнен из Test Suite?
А теперь длинная история.
Представьте, что у вас есть набор тестов 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?) Указать имя тестового класса.
Спасибо.
TestSuite
- можно ли заставить Hudson / Maven просто выполнять все тесты? Поведение по умолчанию на этапе тестирования будет выполнять все тесты и сообщать о них, как и следовало ожидать. - person matt b   schedule 17.05.2011suite
, прочтите всю историю здесь: stackoverflow.com/questions/4970196/ - person Romain Linsolas   schedule 18.05.2011