Приложение Spring Boot не запускается с Maven и Karate

#spring-boot #karate #junit5

#spring-boot #karate #junit5

Вопрос:

У меня есть подобный код, и каким-то образом, когда я запускаю через Intellij, он запускает приложение spring boot ConsumeServiceApplication , однако, когда я запускаю его через maven, оно не запускает то же самое приложение Spring Boot.

Я что-то упускаю в pom.xml чтобы добавить его?

 import foo.ConsumeServiceApplication;
import com.intuit.karate.*;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.*;
import org.springframework.test.context.junit.jupiter.SpringExtension;

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = {
        ConsumeServiceApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = {AcceptanceTestConfiguration.class})
@ActiveProfiles("test")
public class AtddTest {

    private static final String CUCUMBER_OUTPUT_DIR = "target/cucumber";

    @Test
    public void testMyService() throws Exception {
        Results results = Runner.parallel(getClass(), 5, CUCUMBER_OUTPUT_DIR);
        Assertions.assertEquals(0, results.getFailCount());
    }

}
  

Комментарии:

1. извините, понятия не имею, возможно, ваша команда для запуска maven неверна, вы можете попробовать выполнить этот процесс: github.com/intuit/karate/wiki/How-to-Submit-an-Issue

2. После долгих усилий я нашел решение, это была проблема с плагином Maven Surefire dzone.com/articles / …

Ответ №1:

Я понял, что ни одно из SpringBootTest не запускало приложение Spring boot, это была проблема с плагином Maven Surefire

Подробности на

https://dzone.com/articles/why-your-junit-5-tests-are-not-running-under-maven

Комментарии:

1. Да, я смог решить проблему, явно сказав, что хочу использовать отказоустойчивую и надежную версию 2.22.0. могут быть и другие версии, которые также работают. Я обнаружил, что использование Karate для вызова spring boot api во время тестов отлично работает и даже может быть подключено к Gatling (но не используйте фазу тестирования интеграции, потому что я не смог заставить это работать).

Ответ №2:

Чтобы добавить больше информации к ответу на этот вопрос:

  1. используйте spring-boot-maven-plugin для подключения сервера spring boot перед тестированием karate с использованием mvn test , который будет работать достаточно для этой цели. Вы могли бы использовать пример https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/test/ServerStart.java , но, на мой взгляд, это сложнее, чем должно быть.

  2. для тестирования производительности Gatling с помощью karate spring-boot вам понадобится gatling-maven-plugin в сочетании с mvn verify и этим фрагментом кода в верхней части вашего файла .scala:

 // Because Maven Failsafe will not start Spring-Boot before the Gatling test, we hard code it.
  val app: ConfigurableApplicationContext = SpringApplication.run(classOf[MyApplication])
  Runtime.getRuntime.addShutdownHook(new Thread() {
    override def run(): Unit = app.stop()
  })
  

Комментарии:

1. на мой взгляд, Maven сложнее, чем это должно быть 🙂

2. Да, метод Maven не сработал бы, если бы вы хотели использовать Karate автономно. jar для выполнения.