модульное тестирование - нужен совет - PullRequest
2 голосов
/ 18 января 2011

У меня есть весенний проект, который состоит из родительского и нескольких дочерних проектов.сборка основана на maven, а сервер непрерывной интеграции - hudson.

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

мои вопросы:

  1. следует ли мне использовать maven-surefire-plugin и выполнить тщательную очистку в тестовом пакете?
  2. Есть ли способ сообщить hudson (не в pom.xml проектасборка) для запуска определенных модульных тестов и игнорирования других?
  3. я должен создать какую-то другую сборку - (ant?) и использовать ее для запуска модульных тестов на hudson?
  4. есть ли другие варианты, хорошие варианты на рынке, о которых я не знаю?

будет полезен любой совет.

aviad

Ответы [ 2 ]

4 голосов
/ 18 января 2011
  1. мне следует использовать maven-surefire-plugin и сделать тяжелую очистку в тесте пакет
  2. это какой-то способ сказать Хадсон (не в pom.xml проекта строится) запускать специальные юнит-тесты и игнорировать других?

Если вы просто хотите запустить модульные тесты в одномодульном проекте, вы можете сделать

mvn test

Это будет запускать все фазы жизненного цикла maven до test, включая compile и test-compile (как вы можете видеть в встроенных привязках жизненного цикла , surefire:test цель выполняется в фазе test). Теперь, если вы хотите ограничить количество выполняемых модульных тестов, вы можете настроить выполнение плагина surefire:test с параметром test:

mvn test -Dtest=Funky*Test

(Это выполнит все тестовые классы, которые начинаются с Funky и заканчиваются Test)


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

<profiles>
    <profile>
        <id>hudson</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <includes>
                            <include>**/TestA.java</include>
                            <include>**/Funky*Test.java</include>
                            <include>**/Test**.java</include>
                        </includes>
                        <excludes>
                            <!-- overrides above include -->
                            <exclude>**/TestButNotMe.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Теперь вы можете позволить своему Хадсону звонить Мейвену так:

mvn -Phudson test
3 голосов
/ 18 января 2011

1) я должен использовать maven-surefire-plugin и выполнить тщательную очистку в тестовом пакете?

да

2) можно ли как-то сказать hudson (не в pom.xml о создаваемом проекте) запускать определенные модульные тесты и игнорировать другие?

Я не знаю ни одного, если вы используете JUnit. Но вы можете проверить «скрытые» функции версий 4.7, 4.6, 4.5 ... (их много, вы можете найти их в заметках о выпуске). Если вам ничего не нужно, вы можете запрограммировать это сами. (проверка системного свойства и пропуск теста).

3) я должен создать какую-то другую сборку - (ant?) И использовать ее для запуска модульных тестов на hudson?

Это было бы то же самое, что распостранение в помпе. Но в моем личном мнении смешивание Ant и Maven - одна из самых отвратительных вещей, которые вы можете сделать.

4) есть ли другие варианты, хорошие варианты на рынке, о которых я не знаю?

Взгляните на TestNG .

...