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

Maven:如何设置Maven以分别运行单元测试和集成测试

施选
2023-03-14

我有个关于Maven的问题。

我有文件名以*Test结尾的单元测试和文件名以*IT结尾的集成测试。

我的理解是,surefire将运行单元测试,故障保险将运行集成测试。

当我运行:mvn清洁安装

同时运行单元测试和集成测试。

当我跑步时:

mvn验证

这两个测试也会运行。

我是否可以配置maven,以便在使用:mvn clean install时,只运行单元测试。当我使用mvn验证时,是否只运行集成测试?

我的POM构建部分如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <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>failsafe-maven-plugin</artifactId>
            <version>2.4.3-alpha-1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

非常感谢

共有2个答案

韩豪
2023-03-14

我已经创建了一个GitHub存储库,您可以在其中看到maven的可能设置。我在这里发布这篇文章是因为我想和其他人分享我对这个设置的想法,我想当有人搜索maven的测试时可以找到这篇文章

存储库包含一个功能齐全的设置。

GitHub存储库:https://github.com/StefanHeimberg/maven3-unit_integration_systemtest-setup

  • Maven 3.3
  • 用于生产和Systemtest数据库DB迁移的Flyway
  • 用于集成测试执行的Arquillian
  • 用于单元测试的Mockito
  • 仅测试了一个类/业务功能
  • 多个类/业务功能一起编排和测试
  • 最终WAR/EAR文件的完整Wildfly部署
  • 容器配置通过*。cli命令行命令
  • 读取因为需要而使用的数据库(hibernate.hbm2ddl.auto=validate)
  • 使用maven flyway插件部署前的数据库设置
  • 使用sql maven插件加载的Testdata
  • 测试与其他代码分开
苏丰茂
2023-03-14

正如这里提到的,按照惯例,假设集成测试被命名为TestNameIT. java,单元测试被命名为TestNameIT. java,您可以使用包括来过滤集成测试或单元测试。

 类似资料:
  • 我正在Jenkins中设置一个CD管道,我想在两个不同的步骤中运行我的单元测试和集成测试。计划是让我的管道脚本看起来像这样,并让它们单独运行: 我已尝试使用surefire插件,如下所述:https://dzone.com/articles/splitting-unit-and-integration-tests-using-maven-a,而运行“mvn测试”只运行单元测试,但“mvn集成测试”

  • 在以前的一个项目中,我使用Spock测试框架对Java代码进行单元测试。我发现这非常有效,所以我尝试将Spock测试添加到我当前的项目中,该项目使用Maven作为构建工具(前一个项目使用Gradle)。虽然我可以让Maven编译我的Spock测试(使用),但我无法让Maven运行这些测试。 我做了一个简单的例子来演示我在两个文件中的问题: null 当我执行(或)时,我希望运行单个单元测试并失败。

  • 单元测试 单元测试仅依赖于源代码,是测试代码逻辑是否符合预期的最简单方法。 运行所有的单元测试 make test 仅测试指定的package # 单个package make test WHAT=./pkg/api # 多个packages make test WHAT=./pkg/{api,kubelet} 或者,也可以直接用go test go test -v k8s.io/kubernet

  • 我正在进行集成测试,但由于某些原因,maven failsafe插件没有运行。下面是用于集成测试的概要文件。测试类的名称是AppSmokeTest。java@测试正在用于测试。 我看过多篇关于这个问题的帖子 我试着在build标签中运行插件。 我尝试添加 我也尝试过运行maven failsafe插件2.18.1版,因为我看到有人认为它对他们有用。

  • 本文向大家介绍单元测试和集成测试之间的区别,包括了单元测试和集成测试之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,测试是任何应用程序或软件交付过程中最重要的阶段,因为测试不仅可以验证应用程序的质量,还可以为开发人员提供改进其产品的机会。 每个应用程序都以某种高级或低级语言进行开发,这意味着已经为其开发编写了一些代码,因此在要测试的模块的基础上,存在测试的分类,即单元测试和集成测试。

  • 我将和作为测试依赖项: 我的集成测试命名正确(在、或之后,默认情况下由Failsafe包含,默认情况下由Surefire排除)。 有什么方法可以使用JUnit5测试和Failsafe吗?