Java maven中的集成测试问题

Java maven中的集成测试问题,java,maven,kotlin,Java,Maven,Kotlin,我在单独的文件夹中对kotlin应用程序进行了集成测试,如 src -> it -> kotlin -> resources main -> kotlin ->resources test -> kotlin -> resource 我已将以下配置添加到pom.xml中,以运行集成测试 <?xml version="1.0" encoding="UTF-8"?>

我在单独的文件夹中对kotlin应用程序进行了集成测试,如

src ->
     it -> kotlin
       -> resources
    main -> kotlin
         ->resources
    test -> kotlin
         -> resource
我已将以下配置添加到pom.xml中,以运行集成测试

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
  </parent>

  <groupId>com.xxx.api</groupId>
  <artifactId>my-sort</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>my-sort</name>

  <properties>
    <java.version>11</java.version>
    <kotlin.version>1.3.31</kotlin.version>


    <opentracing-brave.version>0.34.2</opentracing-brave.version>
    <reactor.version>3.3.1.RELEASE</reactor.version>

    <!-- testing libraries versions-->
    <mockk.version>1.9</mockk.version>
    <kotlin.junit.version>1.3.41</kotlin.junit.version>
    <wiremock.version>2.24.1</wiremock.version>
    <jacoco.version>0.8.4</jacoco.version>
    <spring-cloud-sleuth.version>2.1.2.RELEASE</spring-cloud-sleuth.version>
    <brave.version>5.6.11</brave.version>
  </properties>


 <build>
    <finalName>my-sort</finalName>
    <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
    <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
    <extensions>
      <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>1.6.0</version>
      </extension>
    </extensions>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <sourceDirs>
                <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
              </sourceDirs>
            </configuration>
          </execution>
          <execution>
            <id>test-compile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>test-compile</goal>
            </goals>
            <configuration>
              <sourceDirs>
                <source>src/test/kotlin</source>
                <source>src/it/kotlin</source>
              </sourceDirs>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <args>
            <arg>-Xjsr305=strict</arg>
          </args>
          <compilerPlugins>
            <plugin>spring</plugin>
          </compilerPlugins>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-allopen</artifactId>
            <version>${kotlin.version}</version>
          </dependency>
          <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-noarg</artifactId>
            <version>${kotlin.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <configuration>
          <includes>
            <include>/com/xxx/api/**/*</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <id>default-prepare-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>default-report</id>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
          <execution>
            <id>default-check</id>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <rules>
                <rule>
                  <element>BUNDLE</element>
                  <limits>
                    <limit>
                      <counter>COMPLEXITY</counter>
                      <value>COVEREDRATIO</value>
                      <!-- change this to the required minimum code coverage -->
                      <minimum>0.0</minimum>
                    </limit>
                  </limits>
                </rule>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.9.1</version>
        <executions>
          <execution>
          <id>add-integration-test-resources</id>
          <phase>generate-test-resources</phase>
          <goals>
            <goal>add-test-resource</goal>
          </goals>
          <configuration>
            <resources>
              <resource>
                <filtering>true</filtering>
                <directory>src/it/resources</directory>
              </resource>
            </resources>
          </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.18.1</version>
        <configuration>
          <includes>
            <include>**/*IT.kt</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <id>failsafe-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

4.0.0
org.springframework.boot
spring启动程序父级
2.2.2.1发布
com.xxx.api
我这一类
0.0.1-快照
我这一类
11
1.3.31
0.34.2
3.3.1.1发布
1.9
1.3.41
2.24.1
0.8.4
2.1.2.1发布
5.6.11
我这一类
${project.basedir}/src/main/kotlin
${project.basedir}/src/test/kotlin
马文
os maven插件
1.6.0
org.springframework.boot
springbootmaven插件
org.jetbrains.kotlin
kotlin maven插件
编译
编译
编译
${project.basedir}/src/main/kotlin
测试编译
测试编译
测试编译
src/test/kotlin
src/it/kotlin
-Xjsr305=严格
春天
org.jetbrains.kotlin
科特林·马文·阿洛彭
${kotlin.version}
org.jetbrains.kotlin
科特林·马文·诺格
${kotlin.version}
org.jacoco
jacocomaven插件
${jacoco.version}
/com/xxx/api/**/*
默认准备代理
配制剂
默认报告
报告
默认检查
检查
捆
复杂性
覆盖层
0
org.codehaus.mojo
构建助手maven插件
1.9.1
添加集成测试资源
生成测试资源
添加测试资源
真的
src/it/resources
org.apache.maven.plugins
maven故障保护插件
2.18.1
**/*IT.kt
故障安全集成测试
集成测试
集成测试
验证
集成测试用例的所有类都以IT.kt结尾,当我运行mvn时,请验证是否只运行单元测试用例,并始终显示故障安全报告

  <?xml version="1.0" encoding="UTF-8"?>
<failsafe-summary result="254" timeout="false">
  <completed>0</completed>
  <errors>0</errors>
  <failures>0</failures>
  <skipped>0</skipped>
  <failureMessage/>
</failsafe-summary>

0
0
0
0
故障保护
(以及
surefire
)内部替换
java
-
中出现的
包括
-匹配器到
。这意味着您不能在那里使用
******IT.kt
,而是需要使用
******IT.java
(或者
******Test.java
surefire
的情况下)。不管你是否真的有java文件

另一种猜测是,您忘记告诉kotlin编译器它也应该在
src/it/kotlin
下编译这些文件,即:

<plugin>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-maven-plugin</artifactId>
    <version>${kotlin.version}</version>
    <executions>
        <execution>
            <id>test-compile</id>
            <phase>test-compile</phase>
            <goals>
                <goal>test-compile</goal>
            </goals>
            <configuration>
                <sourceDirs>
                    <source>src/test/kotlin</source>
                    <source>src/it/kotlin</source>
                </sourceDirs>
            </configuration>
        </execution>
    </executions>
</plugin>

org.jetbrains.kotlin
. 在您的例子中,它是2个Kotlin源文件夹,而不是Java和Kotlin文件夹(这也是您不需要覆盖
maven编译器插件
-配置的原因)


这是我看到的唯一可能丢失的东西。其余的应该没问题。

不,我只想在任何配置文件运行的mvn验证时运行集成测试。我尝试添加com.xxx.api。它不工作。已经尝试过了,不工作。尝试过了,不工作。请注意,您需要使用
故障保护
include
中的
java
-扩展,即
***IT.java
。。。否则他们就不会被带走。。。在引擎盖下,
java
class
取代。。。这就是为什么如果你有
*IT.kt
-文件的话,你的测试会被选中。。。但这也是为什么
***IT.kt
不接收它们的原因…嗯。。。这些是测试类,对吗?这只是另一种测试。。。单元与集成测试…最终解决了您的更改问题,并将maven fail-safe版本从2.18.1升级到2.22.1,谢谢您我使用
2.18.1
进行了测试,因此该版本应该不会有问题。。。但很高兴它成功了。。。我们可能需要清理一下注释…但是如果我使用2.18.1,然后尝试一下,它实际上并不奇怪。你的意思是删除以前的评论?。。。我使用了精简的
pom.xml
(没有spring,没有jacoco等等)。。。也许其他插件会干扰它?很高兴知道您也需要升级版本。。。