第10章 从Maven2中运行JUnit测试(第三部分 JUnit与构建过程)

第10章 从Maven2中运行JUnit测试

10.1 Maven的功能

Maven不仅仅是一个构建工具,以下是Maven的一些核心原则。

10.1.1 约定优于配置
约定优于配置(Convention over configuration)是Maven项目最强大的原则之一。
11165425_feDI.png

10.1.2 强大的依赖管理
Maven通过中心仓库来存储、管理依赖,本地工程通过本地仓库与中心库下载各种依赖。
11165425_7U5K.png
10.1.3 Maven的构建生命周期
Maven另一条强大原则是 构建生命周期(build lifecycle)。

3个内置生命周期:
Default:用于生成项目的工作。
Clean:用于清理项目。
Site:用于生成项目的文档。

每个生命周期都包含了几个阶段(phase),
在Default生命周期的所有阶段如下:
Validate:验证项目是正确的,并且所有必要的信息都是可获得的。
Compile:编译项目的源代码。
Test:使用一个合适的单元测试框架来测试编译好的源代码。这些测试应该不会要求代码被打包或部署。
Package:将编译好的代码打包成可以发布的格式,如JAR。
Integration test:如果有必要,将发布包处理和部署到一个可以运行集成测试的环境中。
Verify:运行任何检查来证实该发布包是有效的并符合质量标准的。
Install:将发布包安装到本地仓库中,以便用作其他本地项目中的一个依赖库。
Deploy:在一个集成或者发布环境,为了与其他的开发人员和项目进行共享,将最终版的发布包复制到远程仓库中。

如果调用以上的任何一个,他们都会从最开始的validate运行,依次运行,直到你调用的那个。比如,mvn test,会依次运行validate、compile、test。

10.1.4 基于插件的架构
Maven是一个基于插件的框架,它的功能都要插件去完成。(当然,核心的插件安装Maven时会一起安装)
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.cactus</groupId>
      <artifactId>cactus.integration.maven2</artifactId>
      <version>1.8.1-SNAPSHOT</version>
    </plugin>
  </plugins>
</build>

10.1.5 Maven项目对象模型
Maven配置文件pom.xml,取自于Project Object Model的简写。
简单的pom.xml
11165425_vHvi.png

pom.xml是可以继承的,下面是一个父项目的配置( 注意packaging的类型),包含一个子模块example-module( 目录名,而不是artifactId):
11165426_m5Bz.png

下面是子模块的pom.xml,它继承了上面的pom.xml
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.manning.junitbook</groupId>
    <artifactId>example-pom</artifactId>
    <version>2.0-SNAPSHOT</version>
  </parent>
  <artifactId>example-child </artifactId>
</project>

pom能从父pom继承所有的元素:
包括依赖库、开发者和贡献者、插件列表、报告列表、ID匹配的插件执行、插件配置

10.2 建立一个Maven项目

安装Maven
1、下载,解压到一个目录下
2、定义环境变量M2_HOME,指向解压目录
3、将M2_HOME\bin 添加到 PATH 中

Maven配置文件settings.xml
settings.xml默认在M2_HOME\conf录入下,将它copy一个到的配置用户目录的.m2目录下,在我的本机是这里:“C:\Users\Neil\.m2”
然后打开它,在settings下加入,指定本地库的目录。
<localRepository>D:\maven_repo</localRepository>
当然也可以做其他设置,比如设置Nexus私服等,使得你本地所有的项目都可以使用这个私服。

用命令行建立Maven项目
用命令行进入我们的工作目录,然后执行以下命令:
mvn archetype:create -DgroupId=com.manning.junitbook -DartifactId=maven-sampling -DarchetypeArtifactid=maven-artifact-mojo
这个命令会依赖maven-archetype-plugin插件,如果没有会自动下载,下载完成后自动执行命令,创建Maven示例项目。

当然这是通过命令行建立的,我们需要把它导入Eclipse,才能在IDE里写代码,如下图:
11165426_3c0E.png
当然这还有个前提,就是安装m2e

安装m2e插件,如果你用的是标准的JavaEE Eclipse(即已有WTP),请安装如下图版本:
11165427_tyOb.png

在Eclipse里创建Maven项目
这个Step by Step 就好了 不废话了。
11165431_vY6t.png

设置m2e
在Eclipse菜单选择Windows->Preferences->Maven
11165431_FjZi.png

在Maven->Installations 默认使用Eclipse自带的maven,这里可以设置使用自己的maven。
11165431_AKeJ.png

在Maven->User Settings设置使用哪个Maven配置文件和本地库路径
11165431_bWA7.png

m2e功能介绍
11165432_uEGB.png

11165432_wAH9.png

pom.xml介绍
上面介绍了约定大于配置、Maven项目目录结构、各种安装配置,下面还剩一个pom.xml,介绍一下。
前面介绍了 Maven项目对象模型,而pom.xml就是描述了这个模型


书里提到的其他东西:
将项目eclipse话,主要是生成两个eclipse配置文件.project 和 .classpath
mvn eclipse:eclipse -DdownloadSources=true

生成项目的站点文档
mvn site

10.3 Maven插件的引入

mvn clean
使用maven-clean-plugin插件,将会清理之前对项目的各种操作,比如清理target目录。

10.3.1 Maven的Compiler插件
mvn compile
使用maven-compiler-plugin插件,编译代码。需要的配置如下:
        < build >
             < plugins >
                   < plugin >
                         < groupId > org.apache.maven.plugins </ groupId >
                         < artifactId > maven-compiler-plugin </ artifactId >
                         < version > 2.0 </ version >
                         < configuration >
                               < source > 1.5 </ source >
                               < target > 1.5 </ target >
                         </ configuration >
                   </ plugin >
              </ plugins >
       </ build >
在上面的附件pom.xml中好像没有这段,其实它是继承了父pom的配置,所以自身就不需要配置了,除非它改变了设置。

10.3.2 Maven的Surefire插件
mvn clean test
使用maven-surefire-plugin插件,来执行单元测试。如果你只想执行某些测试,可以通过配置统配的形式来设置:
< build >
             < plugins >
                   < plugin >
                         < artifactId > maven-surefire-plugin </ artifactId >
                         < version > 2.5 </ version >
                         < configuration >
                               < includes >
                                     < include > **/*Test*.java </ include >
                               </ includes >
                         </ configuration >
                   </ plugin >
             </ plugins >
       </ build >
同compile的配置一样,上面的pom.xml继承了父pom的设置。

10.3.3 使用Maven生成HTML格式的JUnit报告
mvn surefire-report:report
使用maven-surefire-report-plugin插件,可以生成测试报告,配置如下:
< build >
             < plugins>
                   < plugin >
                         < groupId > org.apache.maven.plugins </ groupId >
                         < artifactId > maven-surefire-report-plugin </ artifactId >
                         < version > 2.5 </ version >
                   </ plugin >
             </ plugins >
       </ build >

10.4 Maven的不足
Maven的不足也就是Ant的长处,Ant只是一个构建工具,你可以按任意的方式去做,而用Maven就必须按照Maven的约定去做,优点也是缺点吧。






附件列表

 

转载于:https://my.oschina.net/u/184747/blog/355088

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值