Моят въпрос: Има ли начин да накарате Maven Surefire (или JUnit?) да посочи името на неуспешния тестов клас, когато този клас е бил изпълнен от тестов пакет?
Сега, дългата история.
Представете си, че имате 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