【问题标题】:How run package goal after finished integration tests in maven?在 Maven 中完成集成测试后如何运行包目标?
【发布时间】:2016-02-20 04:54:21
【问题描述】:

默认的构建maven循环是这样的:

  1. 编译
  2. 测试
  3. 预集成测试
  4. 综合测试
  5. 综合测试后
  6. 验证
  7. 安装

pre-intergation-test 上启动数据库。 intergation-test 是弹簧测试,当应用程序启动并针对数据库进行测试时。在post-intergation-test 数据库已关闭。

那么对于那种场景不需要打包整个应用程序,有没有办法在验证目标后打包应用程序?

【问题讨论】:

  • 集成测试的 Maven 含义是,它针对已构建(打包)的工件运行: >集成测试 - 处理并在必要时将包部署到可以运行集成测试的环境中( maven.apache.org/guides/introduction/…) ---- 所以我的建议是尝试相反的方式:我不会扭曲 maven 生命周期,而是尝试让你的测试在 maven 测试阶段运行
  • 问题是:it is not needed to package entire application 是什么意思?您对集成测试阶段的使用完全符合预期……我们在谈论 Web 应用程序吗?您在集成测试阶段到底在做什么?你能显示一个pom文件吗?

标签: java spring maven integration-testing


【解决方案1】:

maven 生命周期中集成测试阶段的目的是测试打包的工件。所以在打包阶段之前尝试执行集成测试是没有意义的。

另一方面,您有测试阶段来执行单元测试。如果您遵循单元测试的严格定义:它们不应该需要数据库。换句话说,在单元测试执行期间:应该模拟数据库。

据我了解您的情况,您有需要数据库的单元测试。这不是一个完美的设计,在理想情况下,您应该考虑重新设计您的单元测试以使用模拟而不是数据库。

但您也可以使用一种中间解决方案,在测试阶段之前/之后启动/停止数据库。 Here is the full life-cycle reference,正如您所见,您可以将数据库启动绑定到 generate-test-resources 阶段。 (我不推荐这个解决方案,因为你的单元测试运行起来很繁重,而且在你的 IDE 中运行它们也变得有点复杂,因为它需要执行一个 maven 阶段)

另一种常用的解决方案是在测试本身中设置一个小的内存数据库。使用 spring 非常简单,这里有一个示例测试配置来证明:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;

import javax.sql.DataSource;

@Configuration
public class UnitTestWithDBConfiguration {

    @Bean
    public DataSource dataSource(){
        return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .setScriptEncoding("UTF-8")
                .ignoreFailedDrops(true)
                .addScript("dbsetup.sql")
                .build();
    }

}

此示例使用 h2 数据库 + src/test/resources/dbsetup.sql 文件来初始化您的数据库(在加载应用程序上下文时)。

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多