Рубрики
Без рубрики

Включение тесты интеграции для запуска в определенных ситуациях с JUnit 5

Что JUnit-это платформа отлично подходит для тестирования, все уже знают. В течение многих лет он использовался как… С тегами java, pt br, кварки, junit.

Что JUnit – это платформа отлично подходит для тестирования, все уже знают. В течение многих лет он использовался как инструмент для модульного тестирования и интеграции. Однако, многие люди перестают использовать некоторые из своих инструментов, не знать их. В этой статье мы рассмотрим, как сделать, чтобы включить/отключить тестирование. Это очень полезно, когда у нас есть интеграционные тесты, которые, как правило, тестирования и медленнее.

Перед выполнением, определим основные понятия, тесты, используемые в в статья.

Модульное тестирование

Это способ проверить отдельные единицы исходного кода. Устройство отдельного класса и его методы. В зависимости от класса, как правило, быть sobreescritas с мокс чтобы изолировать правильно, что мы хотим проверить.

Тестирование интеграции

Интеграционные тесты проверяют различные подразделения системы вместе. В этих испытаниях, mockear некоторых зависимостей (например, соединение с базой данных или в мессенджер) заканчивает тем, что что-то плохо, потому что они много зависимостей, и задача перестает быть тривиальной. Таким образом, тестирование интеграции разделились на два типа тестов:

  • Тест с зависимостями памяти: зависимости (в мессенджер, внешний кэш, базы данных, etc…) подняты в памяти для тестирования. O JUnit не поддерживает эту функцию через extensions .

  • Тест с зависимостями условий: в зависимости подняты и тесты колесо от этих реализаций истинно.

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

Это что-то плохое, как описано в позиция X .

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

Отключение тестирование интеграции

JUnit 5 поддерживает habilitarmos/требуется отключить тестирование в различных ситуациях через испытания, условные и переменные среды, как описано здесь в Bealdung .

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

Теперь, давайте, чтобы наш класс тест уже подписаны с метками.

import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Tag;

@QuarkusTest
public class ExemploTest {
  @Test
  public void SemTag() {
    System.out.println("Rodando teste sem tag...");
  }

  @Tag("integracao")
  @Test
  public void testeDeIntegracao() {
    System.out.println("Rodando teste com tag integração...");
  }

  @Test
  @Tag("outra")
  public void outraTag() {
    System.out.println("Rodando teste com tag outra...");
  }
}

Код довольно прост. Импортируем библиотеки испытания и бирки. После того, как мы создали 3 испытания: без тегов, с меткой “другая” и третий с меткой “интеграцию”.

Используя команду mvn test мы имеем следующее возвращение:

[INFO] Running org.acme.ExemploTest
2020-07-08 19:30:23,622 INFO  [io.quarkus] (main) Quarkus 1.6.0.Final on JVM started in 1.481s. Listening on: http://0.0.0.0:8081
2020-07-08 19:30:23,623 INFO  [io.quarkus] (main) Profile test activated. 
2020-07-08 19:30:23,623 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy]
Rodando teste sem tag...
Rodando teste com tag outra...
Rodando teste com tag integração...
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.205 s - in org.acme.ExemploTest

Это показывает, что все три испытания катили нормально.

Теперь, давайте предотвратить интеграционных тестов работать.

нужно сделать изменения в нашем пом.xml. Там в части плагинов, добавим параметр excludedGroups плагин surefire .


  maven-surefire-plugin
  ${surefire-plugin.version}
  
    integracao
  

Если вы загрузили код непосредственный генератор кода Quarkus , то этот плагин уже присутствует и в некоторых конфигурациях. Нужно просто добавить строку excludedGroups что все будет работать правильно.

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

[INFO] Running org.acme.ExemploTest
2020-07-08 19:29:56,324 INFO  [io.quarkus] (main) Quarkus 1.6.0.Final on JVM started in 1.376s. Listening on: http://0.0.0.0:8081
2020-07-08 19:29:56,326 INFO  [io.quarkus] (main) Profile test activated. 
2020-07-08 19:29:56,326 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy]
Rodando teste sem tag...
Rodando teste com tag outra...
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.982 s - in org.acme.ExemploTest

Как мы видели, только тесты outraTag и testeSemTag катили. Тестирование интеграции остался без поворота и наша проблема уже

Или нет.

С этой soluação, тесты интеграции не будут работать. Никогда. Never. Най. Nein. Узел. Non. (я думаю, что уже дал понять).

Что делать, если человек хочет запустить тест интеграции?

Включение интеграционного тестирования

Для включения тестирования интеграции, и он работать только тогда, когда мы хотим, мы должны сделать еще одно изменение в нашем пом.xml.

Это изменение будет добавить новый профиль выполнения, который будет sobreescrever правила, которые мы изменили там, наверху. Для этого просто зайдите в тег profiles (или создать ее, если она не существует) и добавить тег с этим profile.

 
  integration-test
  
    
      integration-test
    
  
  
    
      
        maven-surefire-plugin
        ${surefire-plugin.version}
        
          
          integracao
          none()
        
      
    
  

Этот тег создает новый профиль выполнения. На этом наш новый профиль, единственный тег, который будет работать это tag интеграцию . Кроме того, мы изменили tag excludedGroups “dessexcluirmos” наш тег выполнения.

E para robar os es agora, é preciso adicionar um parâmetro indicando que é para o утилизатор maven o интеграционный тест perfil. Сделав это, мы получим следующий результат.

Чтобы повернуть, мы используем команду

mvn test -Pintegration-test

И эта команда даст нам следующее возвращение.

[INFO] Running org.acme.ExemploTest
2020-07-08 19:31:57,933 INFO  [io.quarkus] (main) Quarkus 1.6.0.Final on JVM started in 1.100s. Listening on: http://0.0.0.0:8081
2020-07-08 19:31:57,945 INFO  [io.quarkus] (main) Profile test activated. 
2020-07-08 19:31:57,945 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy]
Rodando teste com tag integração...
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.64 s - in org.acme.ExemploTest

Это единственный тестовый запуск был testeDeIntegracao. И теперь да, наша проблема действительно решена.

Когда я начала эту статью, намеревался принять подход на основе казни условные .

Я просто падает на теги и весьма понравилось, и он планировал начать использовать в своих проектах. Пока что я увидел thread в списке электронной почты Quarkus говоря о создании аннотации @IntegrationTest. Теперь давайте подождем и посмотрим, что придет

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

Да, и код, сегодня можно найти нет github .

Оригинал: “https://dev.to/lucasscharf/habilitando-os-testes-de-integracao-para-rodar-em-situacoes-especificas-com-junit-5-bkg”