plugins:
- artifactId: maven-failsafe-plugin
groupId: org.apache.maven.plugins
version: 2.19.1
dependencies:
- artifactId: junit-platform-surefire-provider
groupId: org.junit.platform
version: 1.0.3
- artifactId: junit-jupiter-engine
groupId: org.junit.jupiter
version: 5.1.1
configuration:
includes:
- v3api/*IntegrationTests.java
executions:
- goals: [ integration-test, verify ]
- artifactId: spring-boot-maven-plugin
groupId: org.springframework.boot
version: ${spring.boot.version}
executions:
- goals: [ repackage ]
configuration:
fork: true
executable: true
outputDirectory: ${project.build.directory}/binary
Jun 05, 2018 3:03:15 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoClassDefFoundError: com/adam/api/DbAccess
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetPublicMethods(Class.java:2902)
at java.lang.Class.getMethods(Class.java:1615)
at org.junit.platform.commons.util.ReflectionUtils.getDefaultMethods(ReflectionUtils.java:1024)
at org.junit.platform.commons.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:997)
at org.junit.platform.commons.util.ReflectionUtils.findAllMethodsInHierarchy(ReflectionUtils.java:939)
at org.junit.platform.commons.util.ReflectionUtils.findMethods(ReflectionUtils.java:923)
at org.junit.platform.commons.util.ReflectionUtils.findMethods(ReflectionUtils.java:909)
at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveContainedMethods(JavaElementsResolver.java:189)
at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveChildren(JavaElementsResolver.java:177)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveClass(JavaElementsResolver.java:61)
at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.lambda$resolve$3(DiscoverySelectorResolver.java:69)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolve(DiscoverySelectorResolver.java:68)
at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:50)
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:61)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:82)
at org.junit.platform.surefire.provider.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:50)
at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:98)
at org.junit.platform.surefire.provider.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:121)
at org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:111)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
Caused by: java.lang.ClassNotFoundException: com.adam.api.DbAccess
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 28 more
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
我在Spring plus JUnit Jupiter上也见过这种情况,但它对集成测试没有帮助。
以下对我有用:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springboot.version}</version>
<executions>
<execution>
<!-- repackage will break the integration-test class-path, so schedule after -->
<phase>post-integration-test</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
我可以通过以下方式运行集成测试:MVN verify
SpringBoot通过:java-jar target/my-jar.jar
启动
我正在进行集成测试,但由于某些原因,maven failsafe插件没有运行。下面是用于集成测试的概要文件。测试类的名称是AppSmokeTest。java@测试正在用于测试。 我看过多篇关于这个问题的帖子 我试着在build标签中运行插件。 我尝试添加 我也尝试过运行maven failsafe插件2.18.1版,因为我看到有人认为它对他们有用。
这些插件提供的各种运行时的技术的集成. Table 22.3. Integration plugins Plugin Id 自动应用 协同工作 描述 application java, distribution - 增加了对运行绑定Java项目作为命令行应用的任务. ear - java 增加了对构建J2EE应用程序的支持. jetty war - 在构建中嵌入Jetty web容器可以部署web
下面是我真正的pom的一部分。集成测试的测试已经在@Test注释中分配了一个“集成”组。为了做小测试,我在测试阶段没有排除“集成”组。 当使用例如mvn验证或mvn安装构建时,集成测试在测试阶段执行,但不是验证或集成测试阶段。考试数量保持为0。不知何故,他们没有被捡起来。有人知道可能出了什么问题吗? 更新:将TestNG作为依赖项添加到故障保护插件没有帮助
这些插件提供的各种运行时的技术的集成. Table 22.4. Incubating integration plugins Plugin Id 自动应用 协同工作 描述 distribution - - 对构建增加对ZIP和TAR的支持 java-library-distribution java, distribution - 增加了对建筑ZIP和TAR的一个Java库的支持. ivy-pub
我将和作为测试依赖项: 我的集成测试命名正确(在、或之后,默认情况下由Failsafe包含,默认情况下由Surefire排除)。 有什么方法可以使用JUnit5测试和Failsafe吗?
问题内容: 我还不清楚如何最好地使用Maven Failsafe插件进行集成测试。我的用例是针对本地MySQL数据库测试SQL查询。 我了解应该在该阶段启动数据库,而在期间关闭数据库。但是我该如何指定呢?我应该在pom.xml中放入命令行吗?还是我应该使用特定注释进行注释的方法? 问题答案: 在常规的内置Maven生命周期(jar,war …)中,和测试阶段未绑定到任何maven插件(即,这些阶段