当前位置: 首页 > 知识库问答 >
问题:

mvn spring boot插件中断集成测试

梁和颂
2023-03-14
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
    null

我在Spring plus JUnit Jupiter上也见过这种情况,但它对集成测试没有帮助。

共有1个答案

严斌
2023-03-14

以下对我有用:

      <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插件(即,这些阶段