2015-03-02 2 views
0

Есть ли какой-либо способ с Maven запускать кусок кода в качестве настройки перед тестированием каждого модуля? Очистка для каждого модуля также будет плюсом.Настройка на модуле на Maven

Чтобы привести пример, допустим, что у меня есть модули A и B, с классами тестов AA, AB, BA, BB и BC, каждый из которых содержит пару тестовых методов. Таким образом, модуль A будет запускать тестовые классы AA и AB, первый из которых содержит тестовые методы AA.1 и AA.2 и второй AB.1 и AB.2.

Учитывая, что я хотел бы тест расстановок работать так:

  1. Перед модуль А
  2. До класса АА
  3. Перед методом АА.1
  4. Перед метод AA.2
  5. До класса AB
  6. Перед использованием метода AB.1
  7. Перед использованием метода AB.2
  8. Перед модулем В
  9. перед классом BA
  10. и так далее

Это легко установить большинство из этого, но я не вижу никакой возможности для выполнения шагов 1 и 8, и я хотел бы ,

EDIT

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

ответ

1

Это не очень хорошее решение, но вы всегда можете прикрепить произвольный плагин и цель к фазе сборки process-test-classes, которая работает по умолчанию непосредственно перед test. См. http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference. Очевидно, что этот код не будет работать в той же JVM, что и ваш тестовый код, но если вы хотите подготовить некоторые внешние ресурсы, это может быть удобно.

Если вы готовите внешние ресурсы, вы, вероятно, действительно выполняете интеграционные тесты, и поэтому фаза pre-integration-test - это то, к чему вы хотите подключиться.

1

Это звучит как интеграционные тесты. Это означает, что вы можете использовать pre-integration-test, integration-test и post-integration-testphase, чтобы определить ваши настройки и т. Д., Которые необходимы для проведения соответствующего тестирования. Вы можете связать любой плагин с фазой pre-integration-test, чтобы сделать своего рода настройку (например, настройку базы данных через sql-maven-plugin и т. Д.).

Кроме того, вы можете использовать TestNG, которые поддерживают группы и т.д., и, кроме того, он поддерживает такие вещи, как это:

@BeforeSuite 
@BeforeTest 
@BeforeGroups 
@BeforeClass 
@BeforeMethod 
0

Вы можете сделать это в JUnit путем определения вложенного набора тестов вдоль линий, описанных here с @Before и @After Методы на подвыборках для модулей.

Вы затем configure maven, чтобы запускать свой новый набор тестов, а не отдельные тесты.

Более масштабно, вы можете сделать это на основе именования, без необходимости указывать все отдельные тесты участвуют, по:

  • создания динамического испытания AllTests верхнего уровня
  • Использование Guava ClassPath (или аналогичный), чтобы найти все видимые наборы тестов и тестовые классы
  • добавляющих их на верхний уровень, или вложенные, тестовые наборы по иерархии пакетов
+0

JUnit - это только одна из многих схем тестирования. Но мне любопытно что-то ... есть ли какой-либо способ, определяющий тестовые костюмы, или я должен набирать сотни имен классов? Только один из моих модулей имеет 228 test _classes_ - ручная разводка просто не масштабируется. –

+0

Несмотря на то, что в качестве наиболее часто используемого инструмента для де-факто тестирования интеграции, junit, безусловно, не хватает некоторых функций в этой области. Я обновил свой ответ с некоторыми предложениями о том, как их добавить. – soru

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