当前位置: 首页 > 面试题库 >

Maven在测试阶段之前运行类:exec-maven-plugin exec:java不执行类

乐正嘉瑞
2023-03-14
问题内容

我正在Jenkins盒子上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前还原测试数据库

看起来exec-maven-plugin是可行的方法,但我无法使其运行。有指针吗?尽管有很多示例,但mojo网站上的文档非常薄。

我目前需要参加的课程位于:

MyProject.src.test.java._tools.BuildTestEnvironment.java

我的pom.xml包括:

<pluginManagement>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>            
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                    <id>build-test-environment</id>
                    <phase>generate-test-resources</phase>            
                    <goals>
                        <goal>java</goal>            
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>src.test.java._tools.BuildTestEnvironment</mainClass>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

在詹金斯(Jenkins)中运行此程序,什么也没有发生。如果我在本地运行,我会得到

我尝试过的事情没有成功:

  1. 在Jenkins中运行构建:什么都没有发生。该项目将生成并开始运行测试,但是我的课没有运行。

  2. 在本地运行构建:与Jenkins相同的结果。毫不奇怪。

  3. 在本地运行generate-test-resources:ClassNotFoundException。即:

mvn exec:java generate-test-resources
java.lang.ClassNotFoundException:src.test.java._tools.BuildTestEnvironment

  1. 将类编译到一个jar中,然后将其添加到我的pom中。

更新:

阅读@ppuskar的评论后,我尝试将buildxxx类稍微移动一下。将其移至src.main.java._tools.BuildTestEnvironment之后,我仍然收到类似的消息。这是我的构建日志,以防万一:

[DEBUG]调用:test.java._tools.BuildTestEnvironment.main()
[DEBUG]插件依赖项将被排除。
[DEBUG]将包括项目依赖项。
[DEBUG]收集的项目工件[joda-time:joda-
time:jar:2.3:compile,net.sf.jt400:jt400:jar:6.7:compile,junit:junit:jar:4.11:compile,org.hamcrest:hamcrest
-core:jar:1.3:compile,com.fasterxml.jackson.core:jackson-
core:jar:2.3.0:compile,com.fasterxml.jackson.core:jackson-
databind:jar:2.3.0:compile,com .fasterxml.jackson.core:jackson-
annotations:jar:2.3.0:compile,org.hamcrest:hamcrest-
all:jar:1.3:compile,org.apache.logging.log4j:log4j-api:jar:2.0-rc1
:compile,org.apache.logging.log4j:log4j-core:jar:2.0-rc1:compile]
[DEBUG]收集的项目类路径[C:\ workspace \ VSP_UnitTest \ target \ classes]
[DEBUG]添加到类路径:file:/ C:/ workspace / VSP_UnitTest / target / classes /
[DEBUG]添加项目依赖项:joda-time到类路径
[DEBUG]添加项目依赖项:jt400到类路径
[DEBUG]添加项目依赖项目:将junit
添加到类路径[DEBUG]将项目依赖项目:hamcrest-core
添加到类路径[DEBUG]添加项目依赖项目:将jackson-core
添加到类路径[DEBUG]添加项目依赖项目:将jackson-databind
添加到类路径[DEBUG]添加项目依赖项目:杰克逊注释到类路径
[DEBUG]添加项目依赖项目:hamcrest-all到类路径
[DEBUG]添加项目依赖项目:log4j-api到类路径
[DEBUG]添加项目依赖工件:log4j-core到类路径
[DEBUG]在线程Thread
[test.java._tools.BuildTestEnvironment.main(),5,test.java._tools.BuildTestEnvironment]上加入
[警告] java.lang。 ClassNotFoundException:
java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)的
test.java._tools.BuildTestEnvironment

java.security.AccessController.doPrivileged(http://java.net.URLClassLoader$1.run(URLClassLoader.java:355)本地方法)
在java.net.URLClassLoader.findClass(URLClassLoader.java:354)
在java.lang.ClassLoader.loadClass(ClassLoader.java:424)
在java.lang.ClassLoader.loadClass(ClassLoader.java:357)
在组织.codehaus.mojo.exec.ExecJavaMojo $ 1.run(ExecJavaMojo.java:281)
在java.lang.Thread.run(Thread.java:724)处
[信息] --------------------------------

[INFO]内置故障
[INFO]- --------------------------------------------------

[INFO]总时间:2.602 s
[INFO]完成于:2014-05-15T14:38:50-05:00
[INFO]最终内存:12M / 152M
[INFO] -----------------------------------------


问题答案:

尝试BuildTestEnvironment.javasrc.test.java._tools移至src.main.java._tools
即您的班级将是 src.main.java._tools.BuildTestEnvironment

我尝试运行您提供的方案。它失败了,就像你说的,但是我将Java文件从测试中移到了主文件中……它是RAN :)

干杯:)



 类似资料:
  • 我正在Jenkins Box上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前恢复测试数据库。 看起来exec-maven-plugin是可行的,但我不能让它运行。有什么指示吗?虽然有很多例子,但是mojo站点上的doc非常薄。 我需要运行的类当前位于: myproject.src.test.java._tools.buildTestEnvironment.java 我的pom.x

  • 运行似乎surefire没有执行其测试目标(或者至少没有选择我在配置中包含的测试)。 这是一个多模块maven项目,目前全部在groovy中,其结构类似于以下内容: 我在pom中有以下surefire配置。xml: 但是,当我针对这个pom执行

  • 我们使用maven surefire插件并行运行测试。由配置文件指定。 我希望在surefire并行运行我的测试之前,每次maven的整个执行过程中只能运行一次方法。我怎么能那么做?

  • 我有一个Maven/SpringBoot2.3。3应用JUnit 5和Cucumber(v6.5.1)测试。 问题是,我可以通过Maven运行OK单元测试和集成测试,但它不运行Cucumber。 cucumber赛跑者: Cucumber Spring上下文配置: 步骤: 我在Maven pom中使用Surefire和故障保护。xml:https://github.com/danieldestro

  • 你好,我正在尝试使用Maven运行一个JUnit测试。 [信息]没有要编译的内容-所有类都是最新的 [信息] [信息]--maven-surefire-plugin:2.10:test(default-test)@uitests-core-- 我不知道为什么它不能运行我的测试。请帮帮我。

  • > 我的pom.xml 我添加了一些依赖项和插件,任何人都可以帮助我?? http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0