- 浏览: 769426 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (651)
- Java (39)
- Java 初学者小问题 (66)
- 设计模式 (7)
- 项目管理 (3)
- 数据库 (1)
- 算法 (2)
- Java practices (6)
- Effective Java2读书笔记 (78)
- Linux (2)
- programming ruby 读书笔记 (5)
- Core Java Ninth Edition Volume I 读书笔记 (15)
- Pro Git 读书笔记 (12)
- Git (3)
- Maven in Action 读书笔记 (20)
- Web (12)
- 非技术类书籍 (11)
- 电影 (40)
- Web Cache (1)
- jquery (0)
- 历史 (4)
- Dive Into HTML5 读书笔记 (13)
- 三国演义小学毕业考 (79)
- 高效能人士的7个习惯 读书笔记 (12)
- Java Performance 读书笔记 (3)
- Protocol Buffer 学习笔记 (6)
- Mongo DB 学习笔记 (7)
- Morphia 学习笔记 (7)
- Algorithms -- Princeton 学习笔记 (13)
- String研究 (10)
- Hadoop: The Definitive Guide 读书笔记 (3)
- Java与模式读书笔记 (5)
- Date研究 (3)
- The Roman Empire 听课笔记 (4)
- Algorithms -- Standford 学习笔记 (16)
- Core Java Ninth Edition Volume II 读书笔记 (9)
- Thinking in Java 4th Edition 读书笔记 (21)
- Node : Up and Running 学习笔记 (5)
- Eloquent Javascript (8)
- Smashing Node.js 读书笔记 (1)
- Algorithms II -- Standford 学习笔记 (19)
- Algorithm II -- Princeton 学习笔记 (14)
- 网络安全 (2)
- Javascript (4)
- 正则表达式 (1)
- JAVA 7/8 (15)
- JVM (10)
- NodeJS (1)
- 鸟哥的linux私房菜读书笔记 (14)
- Web Service (1)
- The art of programming (9)
- Introduction to Algorithm 读书笔记 (4)
- Java 源码阅读 (0)
- Spring in Action 读书笔记 (2)
- Java Network Programming 读书笔记 (2)
最新评论
-
心存高远:
谢谢作者分享,刚好看到这里不太明白,现在茅塞顿开。不过runt ...
关于 Maven的传递依赖的理解 -
sxlkk:
851228082 写道甚至在某次技术会议现场遇到《Maven ...
关于 Maven的传递依赖的理解 -
851228082:
851228082 写道a----compile----b-- ...
第五章 坐标和依赖 -
851228082:
a----compile----b-----provided- ...
第五章 坐标和依赖 -
851228082:
甚至在某次技术会议现场遇到《Maven in action》的 ...
关于 Maven的传递依赖的理解
1. com.google.code.kaptcha:kaptcha 是一个用来生成验证码的开源类库。其项目主页为: http://code.google.com/p/kaptcha . Kaptcha 并没有上传到中央仓库,我们可以从 Sonatype Forge ( http://repository.sonatype.org/content/groups/forge/ )仓库获得该构件。
2. Maven 本身并不是一个单元测试框架,它只是在构建执行到特定生命周期阶段的时候,通过插件来执行 JUnit 或者 TestNG 的测试用例。这一插件就是 maven-surefire-plugin ,可以称其为测试运行器( Test Runner ),它能很好地兼容 JUnit3 、 JUnit4 以及 TestNG 。
3. 在默认情况下, maven-surefire-plugin 的 test 目标会自动执行测试源码目录(默认为 src/test/java/ )下所有符合以下命名模式的测试类:
1) **/Test*.java :任何子目录下所有命名以 Test 开头的 Java 类。
2) **/*Test.java :任何子目录下所有命名以 Test 结尾的 Java 类。
3) **/*TestCase.java :任何子目录下所有命名以 TestCase 结尾的 Java 类。
4. 可以设置 -DskipTetst 命令行参数跳过测试的执行,也可以在 POM 中配置如下信息:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
5. 可以设置 -Dmaven.test.skip=true 跳过测试代码的编译和执行,也可以在 POM 中配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <skip>true</skip> </configuration> </plugin>
实际上 maven-compiler-plugin 的 testCompile 和 maven-surefire.plugin 的 test 都提供了一个参数 skip ,它的命令行表达式为 maven.test.skip 。
6. maven-surefire.plugin 提供了一个 test 参数,让 Maven 用户可以只运行指定的测试用例, test 参数的值是想指定的测试用例的类名,同时该参数还支持多个值以及通配符 :
mvn test –Dtest=Random*Test,AccountCaptchaServiceTest 。如果指定的类名不存在,会导致构建失败,但可以通过 -DfailIfNoTests=false 来避免失败。
7. 除了默认命名的测试文件 Maven 可以在 POM 配置中指定想包含或者想排除的测试类:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <includes> <include> **/*Tests.java</include> </includes> <excludes> <exclude> **/*ServiceTest.java</exclude> <exclude>**/TempDaoTest.java</exclude> </excludes> </configuration> </plugin>
两个星号 ** 用来匹配任意路径,一个星号 * 匹配除路径分隔符外的 0 个或多个字符。
8. 默认情况下, maven-surefire-plugin 会在项目的 target/surefire-reports 目录下生成两种格式的错误报告:
1) 简单文本格式
2) 与 JUnit 兼容的 XML 格式(是 Java 单元测试报告的事实标准,可以用 Eclipse 的 JUnit 插件直接打开,也可以被 Hudsonw 使用。)
9. Cobertura 是一个优秀的开源测试覆盖率统计工具( http://cobertura.sourceforge.net/ ), Maven 通过 cobertura-maven-plugin 与之集成,用户可以使用如下命令为 Maven 项目生成测试覆盖率报告:
$ mvn cobertura:cobertura
打开 target/site/cobertura/index.html 文件就能看到具体的报告。
10. TestNG 是 Java 社区中除 JUnit 之外另一个流行的单元测试框架( http://testng.org )。使用 Maven 运行 TestNG 时,首先需要删除 POM 中的 JUnit 依赖,加入 TestNG 依赖:
<dependency> <groupId>org.testng</groupId> <artifactId>testing</artifactId> <version>5.9</version> <scope>test</scope> <classifier>jdk15</classifier> </dependency>
TestNG 使用 classifier jdk15 和 jdk14 为不同 Java 平台提供支持。
11. JUnit 和 TestNG 的常用类库对应关系:
JUnit 类 |
TestNG 类 |
作用 |
org.junit.Test |
org.testng.annotations.Test |
标注方法为测试方法 |
org.junit.Assert |
org.testng.Assert |
检查测试结果 |
org.junit.Before |
org.testng.annotations.BeforeMethod |
标方法在每个测试方法之前运行 |
org.junit.After |
org.testng.annotations.AfterMethod |
标方法在每个测试方法之后运行 |
org.junit.BeforeClass |
org.testng.annotations.BeforeClass |
标方法在所有测试方法之前运行 |
org.junit.AfterClass |
org.testng.annotations.AfterClass |
标方法在所有测试方法之后运行 |
12. 可以在项目根目录下定义如下 testng.xml 文件来配置测试类的集合:
<?xml version=”1.0” encoding=”UTF-8” ?> <suite name=”Suite1” verbose=”1” > <test name=”Regression1” > <classes> <class name=”com.juvenxu.mvnbook.account.captcha.RandomGeneratorTest” /> </classes> </test> </suite>
同时再配置 maven-surefire-plugin 使用该 testng.xml :
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testing.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin>
13. TestNG 支持测试组的概念,能让用户在方法级别对测试进行归类:( JUnit 只能支持类级别的测试归类)
@Test ( groups = { “util”, “medium”} )
Maven 用户可以配置运行一个或者多个 TestNG 测试组:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <suiteXmlFiles> <groups>util,medium</groups> </suiteXmlFiles> </configuration> </plugin>
14. Maven 用户可以通过配置 maven-jar-plugin 将测试类打包,从而可以让别的项目重用测试代码:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <goals> <goal>test-jar </goal> </goals> </execution> </executions> </plugin>
maven-jar-plugin 有两个目标,分别是 test 和 test-jar ,前者通过 Maven 的内置绑定在 default 生命周期的 package 阶段运行,作用是对项目主代码进行打包,而后者没有内置绑定,其默认绑定生命周期阶段为 package 。
在声明一个测试包构件依赖时, type 元素的值需要设定为 test-jar :
<dependency> <groupId>com.juvenxu.mvnbook.account</groupId> <artifactId>account-captcha</artifactId> <version>1.0.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency>
评论
发表评论
-
关于 Maven的传递依赖的理解
2012-09-30 09:50 13919今天又回顾了一下 《Maven in Action》的读书笔记 ... -
《Maven in Action》读后感
2012-02-23 23:48 2171今天终于读完了《Maven in Action》一书,真所谓书 ... -
第十八章 Archetype
2012-02-23 23:30 50311. Archetype 是 Maven ... -
第十七章 编写Maven插件
2012-02-23 19:42 44551. 编写 Maven 插件的主要步骤 ... -
第十六章 m2eclipse
2012-02-23 15:44 23311. m2eclipse ( http: ... -
第十五章 生成项目站点
2012-02-21 09:27 22411. Maven 社区提供了大量插件,能让用户 ... -
第十四章 灵活的构建
2012-02-20 16:21 18301. 通过 <propertie ... -
第十三章 版本管理
2012-02-20 15:57 20631. 版本管理( Version Manage ... -
第十二章 使用Maven构建Web应用
2012-02-15 18:38 60021. Web 项目的 POM ... -
第十一章 使用Hudson进行持续集成
2012-02-09 17:09 22501. 持续集成就是快速 且高频率 ... -
第九章 使用Nexus创建私服
2011-12-06 23:17 107501. Nexus 分为开源版和企业版,开源 ... -
第八章 聚合与继承
2011-12-06 09:55 20121. 为了能用一条命令来构建一个实际 ... -
第七章 生命周期和插件
2011-12-05 13:36 22541. Maven 的生命周期就是为了对所有的构 ... -
第六章 仓库
2011-12-03 18:44 23551. Maven 在一个工作站上的某个位置统一 ... -
第五章 坐标和依赖
2011-12-03 15:14 20191. Maven 定义了这样一组规则:世界上任 ... -
第四章 背景案例
2011-12-02 21:20 13891. 主要场景: 1) 用户访问注册页面 2) ... -
第三章 Maven 使用入门
2011-12-01 18:40 25141. 就像Make的Makefile, Ant的build. ... -
第二章 Maven的安装和配置
2011-12-01 10:01 61841. 设置JAVA_HOME, Path中加入%JAVA_H ... -
第一章 Maven 简介
2011-12-01 09:48 22391. Maven 是优秀的构建工 ...
相关推荐
Maven3实战笔记10——使用Maven进行测试。
第3章:Maven使用入门/3.3 编写测试代码 第3章:Maven使用入门/3.4 打包 第3章:Maven使用入门/3.5 发布 第5章:坐标和依赖/5.2 坐标详解 第5章:坐标和依赖/5.3 举例:发邮件模块的POM.xml文件 第5章:坐标和依赖/...
基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip ...
maven常用命令以及以个测试项目方便测试
根据老师讲解,将我自己写的代码写出来,测试没有问题!
java视频教程之SVN Maven搭建自动化构建教程 Eclipse中使用Maven视频教程云盘下载链接
使用Maven构建的第一个测试DEMO。 开发工具使用MyEclipse 2014
使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 Maven构建自动化 Maven依赖管理 Maven自动化部署 Maven Web应用 Eclispe IDE集成Maven NetBeans IDE集成Maven Eclipse构建Maven...
使用Maven构建多模块项目
maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...
xml2.7.3 不要使用ide内嵌的maven2.8 小结第3章 maven使用入门3.1 编写pom3.2 编写主代码3.3 编写测试代码3.4 打包和运行3.5 使用archetype生成项目骨架3.6 m2eclipse简单使用3.6.1 导入maven项目3.6.2 ...
手把手教你使用Maven进行Android的从配置到开发与资源管理教程
maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用...
使用Maven搭建S2SH工程详解一:使用Maven创建struts2工程
在eclipse中不使用maven创建springboot工程所需jar包,一共32个。亲测各包兼容,完美运行。
Maven_2.0编译、测试、部署、运行,Maven_2.0编译、测试、部署、运行
maven使用文档,maven使用文档 很不错的文档
ssm框架是spring,spring mvc,mybatis三大框架的整合,是现在主流的框架。使用maven构建工具整合这三个框架非常容易,如果大家下载后有什么问题或错误欢迎留言评论,谢谢
idea使用maven创建web项目详细教程
1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2: boot:含有plexus-classworlds类加载器框架 ...