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

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

花品
2023-03-14

我正在Jenkins Box上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前恢复测试数据库。

看起来exec-maven-plugin是可行的,但我不能让它运行。有什么指示吗?虽然有很多例子,但是mojo站点上的doc非常薄。

我需要运行的类当前位于:

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>
            </configurathtml" target="_blank">ion>
        </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中运行构建:什么也不会发生。项目构建并开始运行测试,但我的类没有运行。

    在本地运行构建:与Jenkins中的结果相同。没什么好惊讶的。

    本地运行generate-test-resources:ClassNotFoundException。IE:

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

    将该类编译到一个jar中,并将其添加到我的POM中。

    更新:

    在阅读了@ppuskar的评论之后,我试着稍微移动一下我的buildxxx类。将其移动到src.main.java._tools.BuildTestEnvironment之后,我仍然会得到类似的消息。以下是我的构建日志,以防有所帮助:

    [DEBUG]调用:test.java._tools.buildTestEnvironment.main()
    [DEBUG]将排除插件依赖项。
    [DEBUG]将包括项目依赖项。
    [DEBUG]收集的项目工件[joda-time:jda-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-注释: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-api:jar:2.0-rc1:compile]
    [DEBUG]收集的项目类路径[c:\workspace\vsp_unittest\target\classes]
    [DEBUG]添加到类工件:joda-time to classpath
    [DEBUG]添加项目依赖项工件:JT400to classpath
    [DEBUG]添加项目依赖项工件:junit到类路径
    [DEBUG]添加项目依赖项工件:hamcrest-core到类路径
    [DEBUG]添加项目依赖项工件:jacks-core到类路径
    [DEBUG]添加项目依赖项工件:jacks-databind到类路径
    [DEBUG]添加项目依赖项工件:jacks-databind到类路径
    [DEBUG]添加项目依赖项工件:jacks-adnotations到类路径
    [DEBUG]添加项目依赖项工件:hamcrest-all到类路径
    [DEBUG]添加项目依赖项工件
    [DEBUG]加入thread thread[test.java._tools.buildTestEnvironment.main(),5,test.java._tools.buildTestEnvironment]
    [WARNING]java.lang.ClassNotFoundException:test.java._tools.buildTestEnvironment
    在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    在java.net.URLClassLoader$1.runva.net.urlClassLoader.findClass(urlClassLoader.java:354)
    at java.lang.classLoader.loadClass(classLoader.java:424)
    at java.lang.classLoader.loadClass(classLoader.java:357)
    at org.codehaus.mojo.exec.execJavaMojo$1.run(execJavaMojo:281)
    at java.lang.thread.run(thread.java:724)
    [INFO]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 共有1个答案

    长孙淳
    2023-03-14

    我想把这作为一个评论来回应雷布齐的评论,但我没有这个名声。

    但是在主配置中有测试配置

    Exec Maven插件支持更改类路径范围,这样您就可以使用测试范围内的资源,而无需将它们移出测试包,如下所示:

    <configuration>
        <mainClass>src.test.java._tools.BuildTestEnvironment</mainClass>
        <classpathScope>test</classpathScope>
    </configuration>
    

    这提供了一个干净的解决方案,其中测试设置代码保留在测试资源中。

     类似资料:
    • 问题内容: 我正在Jenkins盒子上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前还原测试数据库。 看起来exec-maven-plugin是可行的方法,但我无法使其运行。有指针吗?尽管有很多示例,但mojo网站上的文档非常薄。 我目前需要参加的课程位于: MyProject.src.test.java._tools.BuildTestEnvironment.java 我的po

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

    • 我有一个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-- 我不知道为什么它不能运行我的测试。请帮帮我。

    • 我正在一个硒自动化项目中运行回归测试。测试是用 JUnit 5.5.1 编写的。没有 Surefire 或故障安全插件(测试不在 src/测试/java 下,它们位于 src/主/java 下,因为不是单元测试)。 问题是,当我使用.bat文件(执行mvn exec:java…)运行代码时,没有一个测试被执行,我不确定我的配置是否完全正确。在最坏的情况下,这是我使用的JUnit版本的一个bug(我

    • 大家好,我实际上正在使用Jenkins和testlink(带有testlink插件)来实现测试自动化。 我谷歌了很多,但没有什么真正有用的,有人能帮我PLZ吗?