Поставщик Maven surefire testng запускает тесты JUnit, но не сообщает о результатах

В моем проекте есть тесты TestNG и JUnit (на самом деле Spock). Итак, нам нужно запустить оба и получить результаты от обоих. С поставщиками безотказной работы это казалось довольно простым, поэтому мы сделали следующее:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
                <threadCount>1</threadCount>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-testng</artifactId>
                    <version>2.17</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.17</version>
                </dependency>
            </dependencies>
        </plugin>

Однако через некоторое время выяснилось, что тесты junit запускаются дважды. Это нехорошо, потому что у нас много тестов, и я бы хотел ограничить время их выполнения.

После небольшого исследования я обнаружил, что surefire-testng провайдер запускает тесты TestNG и JUnit. И снова все казалось простым - я удалил surefire-junit47 провайдера.

Что ж, это тоже не было хорошим решением, потому что оказалось, что провайдер testng запускает тесты junit, но не дает результатов в target/surefire-reports/TEST*.xml. Я нашел там только результаты TestNG.

Есть ли какое-то решение, позволяющее запускать тесты только один раз и сообщать результаты?


person amorfis    schedule 30.05.2014    source источник
comment
могли бы вы использовать surefire для запуска junit и failsafe для запуска testng?   -  person guido    schedule 01.06.2014


Ответы (1)


Я использую surefire-testng для запуска тестов junit, но у меня нет тестов testng в одном и том же запуске.

Я извлекаю отчеты, используя:

**/surefire-reports/*.xml

Вы можете настроить surefire-testng для включения или исключения любых тестов, возможно, вы можете исключить тесты junit по шаблону, а затем запустить их провайдер junit47?

surefire-reports также можно настроить для сбора отчетов junit и / или testng.

Более поздние тесты junit используют аннотации, а не соглашения об именах. Кажется, что testng это понимает, но поведение по умолчанию отчетов surefire, похоже, сводится к сбору данных только по соглашению об именах.

Я до сих пор использую соглашения об именах, а также аннотации в своих тестах junit (Test * / Test for unit и IT / * IT для интеграции), что позволяет мне лучше контролировать безотказность и отказоустойчивость.

Либо используйте соглашения об именах, чтобы включить тесты в поведение плагинов по умолчанию, либо настройте плагины для запуска определенных тестов и сбора нужных данных.

person CharlieS    schedule 20.10.2014