`
bloodwolf_china
  • 浏览: 131602 次
社区版块
存档分类
最新评论

使用maven实现单元测试和集成测试

阅读更多
    单元测试是对最小单元即方法的测试,要隔离对他模块的依赖,一般采用stub和mock两种方式
    集成测试是对功能的测试,对于大部分web模块来说需要启动web容器,进行集成测试
    maven生命周期中已经包含测试(test)和集成测试(integration-test),但未对两种测试代码做区分,需要自己解决启动web容器和代码区分问题。
    首先配置maven jetty插件在集成测试阶段自动启动
   
<plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.10</version>
                <configuration>
                    <stopPort>9966</stopPort>
                    <stopKey>stop-jetty-for-it</stopKey>
                    <contextPath>/SDKAuth</contextPath>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <jettyEnvXml>${basedir}/src/test/resources/jetty-env.xml</jettyEnvXml>
                </configuration>
                <executions>
                    <execution>
                        <id>start-jetty</id>
                        <!--集成测试前启动jetty-->
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <daemon>true</daemon>
                        </configuration>
                    </execution>
                    <execution>
                        <id>stop-jetty</id>
                        <!--集成测试结束停止jetty-->
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

   然后测试代码进行单元测试和集成测试区分,一般有两种方式:
   一是使用maven profile,通过profile区分
   二是根据生命周期,配置maven surefire 插件不同生命周期的includes或/exclueds属性
   我使用的方式二,在src/test/java目中把单元测试代码放在unit包,集成测试代码放在integration包,具体配置如下:
  
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>run-integration-test</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>**/integration/**/*.java</include>
                            </includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>run-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>**/unit/**/*.java</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <dependentWarExcludes>WEB-INF/lib</dependentWarExcludes>
                </configuration>
            </plugin>
        </plugins>

   可以参考http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing
    运行集成测试命令 : mvn integration-test
引用

2012-05-16 15:36:44.293::INFO:  Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 10 seconds.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.346 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

分享到:
评论

相关推荐

    Jmeter+Jenkins+maven接口自动化集成

    Jmeter+Jenkins+maven 接口自动化集成测试框架是一种自动化测试解决方案,旨在简化测试过程,提高测试效率和测试质量。该框架通过集成 Jmeter、Jenkins 和 Maven 三个软件工具,实现了自动化测试、自动构建和自动...

    dubbo单元测试maven项目

    2. **Maven测试框架**:Maven作为项目管理工具,包含了丰富的插件支持单元测试。通常我们会使用JUnit作为测试框架,配合Mockito等库来模拟依赖服务,创建隔离的测试环境。 3. **单元测试**:对于每个服务,编写单元...

    jacoco单元测试覆盖率+maven DEMO

    - **TestNG**:TestNG是另一种流行的Java测试框架,它扩展了JUnit,提供了更丰富的功能,如支持多种测试类型、并发测试等,常用于单元测试和集成测试。 【详细说明】: 1. **JaCoCo配置**:在Maven的`pom.xml`文件...

    MvnTestsSeparation:尝试分离单元测试和集成测试

    本项目"MvnTestsSeparation"旨在通过Maven构建工具,实现单元测试与集成测试的分离,以便更好地管理和执行测试。 ### 单元测试(Unit Testing) 单元测试是对程序中的最小可测试单元进行检查,通常是单个方法或...

    测试maven用到的资源

    集成测试通常在“集成测试”阶段进行,可以使用maven-failsafe-plugin来执行。这个插件可以运行src/test/integration或src/test/java下的测试类,这些类通常用于测试组件间的交互或整个系统的整合。 为了提高测试...

    chm版本Maven教程

    使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 Maven构建自动化 Maven依赖管理 Maven自动化部署 Maven Web应用 Eclispe IDE集成Maven NetBeans IDE集成Maven Eclipse构建Maven...

    Maven的Dependency测试

    本文将深入探讨Maven的Dependency测试方面,帮助开发者理解如何有效地管理和测试项目依赖。 1. **Maven依赖管理** Maven的`dependency`标签用于在`pom.xml`文件中声明项目所依赖的外部库。这些依赖可以是JAR文件,...

    maven+jenkins+sonar集成搭建

    "maven+jenkins+sonar集成搭建" 是一个典型的持续集成(Continuous Integration, CI)和持续质量检测(Continuous Quality, CQ)解决方案,旨在帮助开发团队实现这一目标。以下将详细介绍这三个组件以及它们如何协同...

    maven-unit-integrated-tests:一个简单的项目,以一个如何分离单元测试和集成测试的示例为例

    介绍这个示例项目展示了如何分别运行单元测试和集成测试仅通过测试安装应用程序 mvn clean install仅运行测试 mvn test使用测试和集成测试安装应用程序 mvn clean install -Pintegration-test运行集成测试 mvn ...

    maven安装和eclipse集成

    【 Maven 安装和 Eclipse 集成】 Maven 是一个强大的项目管理和构建工具,它主要负责管理项目构建、依赖关系以及项目的生命周期。Maven 的核心功能是通过使用 Project Object Model (POM) 文件来自动解决项目的依赖...

    Maven和Eclipse集成

    假设我们需要使用Maven和Eclipse来构建一个简单的Java Web应用。首先,在Eclipse中创建一个新的Maven项目,并配置必要的依赖。接着,编写Java类和Web资源文件,最后通过Maven命令进行构建和部署。 1. **创建Maven...

    maven的安装文件以及集成TOMCAT、eclipse的教程

    4. **生命周期与构建阶段**: Maven拥有丰富的生命周期,如`clean`、`compile`、`test`、`install`和`deploy`等,分别对应清理、编译、测试、安装到本地仓库和部署到远程仓库等操作。 5. **插件**: Maven通过插件...

    maven2 java项目管理 工具 测试 框架

    clean阶段用于清理项目,default阶段涵盖了编译、测试、打包、集成测试、验证、部署等步骤,而site阶段则用于生成项目报告和站点文档。 **2. 依赖管理** Maven 2 的强大之处在于它的依赖管理功能。通过在POM文件中...

    maven常用命令以及以个测试项目

    **正文** Maven是Java开发中的一个项目管理工具,它主要负责构建、依赖管理和项目信息管理。本篇文章将深入探讨Maven的常用命令,并...而提供的测试项目则可以帮助我们更好地理解Maven如何与测试集成,确保代码质量。

    jenkins+maven+jmeter接口持续集成maven工程源码

    例如,`maven-surefire-plugin`用于运行单元测试,`maven-failsafe-plugin`用于运行集成测试。在这个项目中,`pom.xml`可能还包含了运行JMeter测试的插件,如`maven-jmeter-plugin`。 通过以上讲解,我们可以看到这...

    Jmeter+Jenkins+maven接口自动化集成.rar

    在这个项目中,我们将利用JMeter、Jenkins和Maven三个强大的工具进行接口自动化集成,实现持续集成和自动化测试。 **JMeter** 是一个开源的性能测试工具,主要适用于Web应用的压力和负载测试,但也可以用于接口测试...

    Struts2+maven+spring+mybatis整合实现注册功能实例

    8. 测试:通过单元测试和集成测试确保各个部分都能正常工作。 在实际项目中,还会涉及到异常处理、安全性配置、国际化支持等更多细节。这个实例提供了基础的整合过程,帮助开发者理解如何将这些组件结合在一起,...

    ssm+maven实现登录

    - 服务层接口和实现:UserService和UserServiceImpl,负责业务逻辑。 - DAO(数据访问对象)层:如UserMapper接口,定义MyBatis的SQL映射。 - SQL映射文件:在MyBatis中,XML文件定义具体的SQL语句。 - 配置文件:...

    4.Jenkins持续集成Maven讲解

    Jenkins是一个用Java编写的开源持续集成工具,提供了一个友好的Web界面,用于配置和执行各种自动化任务,如编译、单元测试、集成测试、部署等。通过插件机制,Jenkins支持多种编程语言和开发工具,包括Java、Python...

Global site tag (gtag.js) - Google Analytics