Как разделить модульное тестирование и интеграционное тестирование в проекте maven

У меня есть проект Maven и множество классов юнитов. Я развиваю с Eclipse. Я хочу разделить классы функционального тестирования и классы интеграционного тестирования.

Когда я собираю проект в Eclipse, я хочу, чтобы выполнялись только классы функционального теста.

Дженкинс должен исполнить их обоих.

Какой подход я должен использовать?

10 голосов | спросил Kayser 20 +04002011-10-20T17:42:54+04:00312011bEurope/MoscowThu, 20 Oct 2011 17:42:54 +0400 2011, 17:42:54

3 ответа


0

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

Предположим, у меня есть приложение, представленное в виде проекта application Maven, который содержит модуль jar с именем project. Я храню модульные тесты внутри самого project, чтобы они выполнялись всякий раз, когда я создаю свое приложение. Это также построено каждую ночь Дженкинсом; В идеале успешные сборки должны автоматически развертываться в одной или нескольких тестовых средах как для ручных, так и для автоматических тестов. В настоящее время это делается вручную.

Для каждой среды, в которой мне нужно запускать интеграционные тесты, у меня есть проект агрегатора Maven applicationTestEnvX. Он содержит, по крайней мере, модуль projectTest, где я храню те интеграционные тесты, которые не зависят от среды, а также любой код поддержки тестов. Тесты для моего модуля project, относящиеся к среде X, хранятся в projectTestEnvX модуль. У меня есть задание в Jenkins для каждого проекта applicationTestEnvX, в котором каждый вечер проводятся мои тесты. В идеале они должны выполняться в зависимости от результата сборки приложения, но я еще не там.

Существует также прямая связь с тем, как мои проекты хранятся в Subversion и в моих рабочих пространствах Eclipse, но это другая история; -)

ответил Nicola Musatti 20 +04002011-10-20T19:47:20+04:00312011bEurope/MoscowThu, 20 Oct 2011 19:47:20 +0400 2011, 19:47:20
0

Вы можете разделить свои модульные и интеграционные тесты на отдельные пакеты (или, возможно, даже на отдельные исходные папки, но затем вам придется обновить конфигурацию Maven, чтобы распознать, что у вас есть две отдельные исходные папки для тестов).

Чтобы воспользоваться этим, в конфигурациях запуска Eclipse (Run> Run Configurations), создайте новую конфигурацию запуска JUnit, в которой «Запустите все тесты в выбранном проекте, пакете или исходной папке:», выберите папку «пакет /источник», содержащую только те тесты, которые вы хотите запустить .


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

То, как я делал это раньше, - это соглашение об именовании тестовых случаев JUnit.

Я бы назвал все тестовые случаи ...UnitTest (например, RegistrationManagerUnitTest) и контрольные тесты интеграции, я бы назвал ...IntegrationTest (например, RegistrationDaoIntegrationTest)

Затем в Maven вы можете настроить его для запуска всех тестовых случаев, классы которых заканчиваются на ...UnitTest (по умолчанию он ищет классы чье имя заканчивается на ...Test. Что-то вроде:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!-- Run only tests whose name end with "UnitTest" -->
        <includes>
            <include>**/*UnitTest.java</include>
        </includes>
    </configuration>
</plugin>
ответил Jack Leow 20 +04002011-10-20T19:27:27+04:00312011bEurope/MoscowThu, 20 Oct 2011 19:27:27 +0400 2011, 19:27:27
0

К вашему сведению, с помощью TestNG вы просто используете группы, например, @Test (groups = "интеграция") и @Test (groups = "unit"). Затем вы просто запускаете разные группы в зависимости от того, что вам нужно.

ответил Cedric Beust 21 +04002011-10-21T20:31:33+04:00312011bEurope/MoscowFri, 21 Oct 2011 20:31:33 +0400 2011, 20:31:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132