Java maven中的集成测试问题
我在单独的文件夹中对kotlin应用程序进行了集成测试,如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"?>
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等等)。。。也许其他插件会干扰它?很高兴知道您也需要升级版本。。。