使用Maven进行集成测试详解

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(80)   2024-05-26 16:20:11

使用 maven 实现单元测试很普通,我们大多数人都熟悉项目结构和单元测试所在的位置。

然而,集成测试是不同的情况,大多数时候它们有完全不同的要求。例如,让单元测试在内存数据库中的 h2 上运行是可以的,但是当涉及到集成测试和复杂查询时,最好针对实际的关系数据库执行它们,例如一种用于生产。

考虑到上面的例子,我们的集成测试可能有不同的配置和依赖关系。

因此,我们的集成测试目标是将它们与其他测试分开并单独执行。

关于我们在源目录中的 Maven 结构,我们有主要的“文件夹”和测试“文件夹”。

以同样的方式,我们将添加一个名为“it”的额外目录。 “it”目录将包含一个用于我们的 java 源代码的 java 目录和一个资源目录。与测试目录相同的结构。

然后我们应该指导 Maven 构建我们的代码并将其添加到我们的测试源中。

<plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <id>add-test-source</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>add-test-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>src/it/java</source>
                                </sources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

通过使用构建助手 maven 插件,我们可以指示 maven 将额外的测试源目录添加到我们的构建中。

下一步是指示 maven 运行我们的单元测试。为此,我们将使用 Maven failsafe 插件

Failsafe 插件旨在运行集成测试,而 Surefire 插件旨在运行单元测试。选择名称 (failsafe) 既因为它是 surefire 的同义词,也因为它暗示当它失败时,它会以安全的方式进行。

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.15</version>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

然后执行我们应该发出的集成测试。

mvn verify

正如预期的那样,我们的集成测试单独运行。

总而言之,我们希望将集成测试与我们的单元测试分开。我们还希望它们单独运行。这可以通过使用 maven failsafe 插件来实现。您可以在 github 上找到示例项目。

标签2: Java教程
地址:https://www.cundage.com/article/jcg-integration-tests-maven.html

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...