Как запустить тесты интеграции переднего плана при весенней загрузке? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть простой весенний загрузочный проект, который имеет структуру maven, такую ​​как:

project
  - backend (spring boot)
  - frontend (angular)

Я настроил проект так, что * классы IT.java запускаются во время фазы тестирования интеграции maven, и они успешно тестируютREST API Spring Boot с базой данных H2.

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

В backend / src / main / resources / static у меня есть простой индекс.html файл.Когда тесты на огурцы запускаются, они открывают браузер, и я вижу содержимое этого файла.

В модуле backend (war) я копирую содержимое dist из угловой сборки ...

    <build>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring.boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>some.package.Boot</mainClass>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>${maven.war.plugin.version}</version>
            <configuration>
                <warName>${root.context}</warName>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
        <resources>
          <resource>
           <directory>../frontend/<appname>/dist/frontend</directory>
            <!--<targetPath>src/main/resources/static</targetPath>-->
            <targetPath>static</targetPath>
           </resource>
         </resources>
   </build>

В результирующем файле war угловые файлы упакованы в WEB-INF / classes / static / .

Как вы заметили выше, я также пытался скопировать угловой код в resources / static, ноэто помещает файлы в target / classes / src / main / resources / static, так что это неправильный подход!

Тем не менее, тесты на огурец по-прежнему видят только содержимое файла index.html из src /main / resources / static при запуске.

Потенциально мы могли бы переместить угловое приложение в то же дерево src, что и код java / webapp, но это не вариант.

Как мне убедитьSpring Boot использует войну в качестве цели, а не то, чем она кажется должна заниматься и обслуживать контент из источника?

Версии: Java 11

Плагин войны Maven 3.2.2

Определена версия Springbooted в родительском pom как 2.1.3.RELEASE

  • spring-boot-starter-web
  • spring-boot-starter-data-rest
  • spring-boot-starter-data-jpa
  • spring-boot-starter-data-jdbc
  • spring-boot-starter-tomcat (не уверен, что он мне нужен)
...