Интеграционные тесты создают файлы для упакованного jar

Я создаю фрагменты spring-restdocs с уверенностью в своих интеграционных тестах. С maven и отказоустойчивым плагином, который по умолчанию использует фазы integration-test и verify. Проблема в том, что asciidoctor-maven-plugin (чтобы сгенерировать окончательный файл HTML из фрагментов) и maven-resources-plugin (чтобы скопировать окончательный файл HTML в нужное место) выполняются до интеграционных тестов в prepare-package.

С этим asciidoctor, естественно, не работает, потому что сниппеты еще не сгенерированы.

Если я настрою asciidoctor для запуска в post-integration-test, он преуспеет, но готовая HTML-страница не будет в моей банке, потому что банка уже была создана на этапе package.

Поэтому я чувствую, что единственный вариант — запустить мои интеграционные тесты уже на этапе tests (вероятно, с уверенным срабатыванием вместо отказоустойчивого).

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

Интересно, есть ли передовая практика, которую я игнорирую? Должны ли интеграционные тесты никогда не создавать что-то, что можно поместить в банку?

Мне кажется, что интеграционные тесты в maven предназначены для перекрестных тестов (следовательно, их запускают после пакета). И не так, как я их использую, просто для больших тестов, которые включают несколько частей (особенно БД) в одном банке.

Что я хотел бы:

  1. запустить все тесты
  2. компилировать документацию
  3. упаковать все в банку

Выдержка из моего pom.xml

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <skip>${skipSurefire}</skip>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.22.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includes>
                        <include>**/*IT.java</include>
                        <include>**/*E2ET.java</include>
                    </includes>
                </configuration>
            </plugin>

            <!-- Compile API documentation -->
            <plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.8</version>
                <executions>
                    <execution>
                        <id>generate-docs</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                        <configuration>
                            <backend>html</backend>
                            <doctype>book</doctype>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.restdocs</groupId>
                        <artifactId>spring-restdocs-asciidoctor</artifactId>
                        <version>${spring-restdocs.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <!-- Package API documentation -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.outputDirectory}/public/docs
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>
                                        ${project.build.directory}/generated-docs
                                    </directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

person Simon Lenz    schedule 27.12.2020    source источник


Ответы (1)


Фазы integration-test и verify — это просто привязки по умолчанию для интеграционный тест и проверить цель. Вы также можете привязать свои интеграционные тесты к фазе test:

                  ...
                  <artifactId>maven-failsafe-plugin</artifactId>
                  ...
                  <executions>
                    <execution>
                        <id>integration-tests</id>
                        <phase>test</phase>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                  </executions>

и так добиться того, что вам нравится/нужно.

person Gerold Broser    schedule 27.12.2020