Запустите основное приложение Springboot перед интеграционными тестами - PullRequest
0 голосов
/ 30 августа 2018

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

@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
@Category(Integration.class)
@ActiveProfiles("test")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class MyTestClass {

@BeforeClass
public static void setUp(){

    /*SpringApplication.run(MyApplication.class).close();

    System.setProperty("spring.profiles.active", "test");
    MyApplication.main(new String[0]);*/
}

Я хочу запустить тесты maven с аргументами:

clean integration-test -Dgroups=xxx.annotation.type.Integration -Drun.jvmArguments=-Dspring.profiles.active=test

но это не работает. Как я могу исправить эту командную строку Maven?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Чтобы запустить приложение в определенном профиле для интеграционного теста, необходимо аннотировать класс теста с помощью @SpringBootTest и @ActiveProfiles с параметрами, указанными ниже:

@SpringBootTest(classes = {MyApplication.class},  webEnvironment = WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")

Приложение, которое вы определяете в classes = {MyApplication.class}, будет запущено на произвольном порту, если вы предоставите webEnvironment = WebEnvironment.RANDOM_PORT с использованием профиля, указанного в @ActiveProfiles. Если вы хотите, чтобы он запускался на указанном порту, используйте WebEnvironment.DEFINED_PORT.

0 голосов
/ 30 августа 2018

Вы можете использовать spring-boot-maven-plugin и привязать его к этапу тестирования перед интеграцией в maven следующим образом:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.0.4.RELEASE</version>
        <executions>
          <execution>
            <id>pre-integration-test</id>
            <goals>
              <goal>start</goal>
            </goals>
          </execution>
          <execution>
            <id>post-integration-test</id>
            <goals>
              <goal>stop</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
...