2014-01-08 1 views
2

У меня есть куча классов, которые имеют в них несколько тестов. Можно ли запускать все тесты из 3 классов, а затем только один или два теста из другого класса?Maven: Запуск всех тестов из нескольких классов + один тест из другого класса

Я думал, что-то, как это будет работать, но я не могу заставить его работать:

mvn -Dtest=WTest,XTest,YTest,ZTest#thisTest test 

Я желающему запустить все тесты в классе W, X и YTest и только тест с именем ThisTest в класс ZTest.

+0

Что происходит, когда вы запускаете вышеуказанное? Все ли тесты выполняются в 'ZTest', а не просто' thisTest'? –

+1

Нет Я получаю сообщение stringOutOFBounds. Если я удалю ZTest # thisTest, то запустите W, X, Y. Если я удалю W, X, Y, то thisTest будет выполняться из Z. Это ошибка, которую я получаю: 'java.lang.StringIndexOutOfBoundsException: индекс строки за пределами диапазона: -1 at java.lang.String.substring (String.java: 1904) в org.apache.maven.surefire.junit4.JUnit4Provider.getMethod (JUnit4Provider.java:287) в org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet (JUnit4Provider.java:147) в орг. apache.maven.surefire.junit4.JUnit4Provider.invoke (JUnit4Provider.java:124) ' –

+0

OK - какая версия Surefire вы используете (может быть явно указана в pom.xml или вам может потребоваться проверить вывод консоли)? –

ответ

1

Я не уверен, что это действительно поддерживается. Проведя последние полчаса или около того, глядя на исходный код JUnit4Provider, кажется, что surefire будет работать в режиме «весь класс» (когда вы укажете имя тестового класса) или «режим отдельных методов» (когда вы укажете имя метода в тестовом классе), но не оба одновременно объединены.

Однако, я нашел обходное решение. Вы должны быть в состоянии сделать это:

mvn -Dtest=xxx.xxx.WTest#*Test,xxx.xxx.xxx.XTest#*Test,xxx.xxx.xxx.YTest#*Test,xxx.xxx.xxx.ZTest#thisTest test 

Так по существу вы бежите тесты в «индивидуальном режиме метода» с использованием *Test подстановочных указать все тестовые методы в WTest, XTest и YTest - вист только работает thisTest в ZTest. Это, очевидно, предполагает, что имена методов в ваших тестовых классах заканчиваются на Test

Обратите внимание, что для этого мне пришлось использовать полные имена классов (что должно показать xxx.xxx.xxx) ,

Смежные вопросы