- 浏览: 796650 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 13983今天又回顾了一下 《Maven in Action》的读书笔记 ... -
《Maven in Action》读后感
2012-02-23 23:48 2210今天终于读完了《Maven in Action》一书,真所谓书 ... -
第十八章 Archetype
2012-02-23 23:30 50821. Archetype 是 Maven ... -
第十七章 编写Maven插件
2012-02-23 19:42 44921. 编写 Maven 插件的主要步骤 ... -
第十六章 m2eclipse
2012-02-23 15:44 23771. m2eclipse ( http: ... -
第十五章 生成项目站点
2012-02-21 09:27 22881. Maven 社区提供了大量插件,能让用户 ... -
第十四章 灵活的构建
2012-02-20 16:21 18701. 通过 <propertie ... -
第十三章 版本管理
2012-02-20 15:57 21201. 版本管理( Version Manage ... -
第十二章 使用Maven构建Web应用
2012-02-15 18:38 60411. Web 项目的 POM ... -
第十一章 使用Hudson进行持续集成
2012-02-09 17:09 23171. 持续集成就是快速 且高频率 ... -
第九章 使用Nexus创建私服
2011-12-06 23:17 108051. Nexus 分为开源版和企业版,开源 ... -
第八章 聚合与继承
2011-12-06 09:55 20491. 为了能用一条命令来构建一个实际 ... -
第七章 生命周期和插件
2011-12-05 13:36 23081. Maven 的生命周期就是为了对所有的构 ... -
第六章 仓库
2011-12-03 18:44 24071. Maven 在一个工作站上的某个位置统一 ... -
第五章 坐标和依赖
2011-12-03 15:14 20851. Maven 定义了这样一组规则:世界上任 ... -
第四章 背景案例
2011-12-02 21:20 14231. 主要场景: 1) 用户访问注册页面 2) ... -
第三章 Maven 使用入门
2011-12-01 18:40 25501. 就像Make的Makefile, Ant的build. ... -
第二章 Maven的安装和配置
2011-12-01 10:01 62411. 设置JAVA_HOME, Path中加入%JAVA_H ... -
第一章 Maven 简介
2011-12-01 09:48 22901. Maven 是优秀的构建工 ...
相关推荐
最后,章节可能还会涉及持续集成和部署的话题,如使用Maven或Gradle进行项目构建,以及如何配置Docker容器化应用,以便于在不同环境中快速部署和扩展。 由于资料只提供了第十章的源码,因此具体的实现细节和示例...
通常,这种命名方式表明每个目录对应于课程或教程的第九章和第十章,里面可能包含多个 Java 源代码文件(如 .java 文件)以及相关的说明文档或测试文件。 基于这些信息,我们可以推测这个案例开发集锦可能涵盖以下...
第十章 设计器 66 10.1 安装 67 第十一章 控制台 68 11.1 安装 68 11.2 运行流程管理控制台 68 11.2.1 管理流程实例 69 11.2.2 人工任务列表 71 11.2.3 报告 72 11.3 添加新的流程/任务表 73 11.4 REST interface 74...
6. **构建与测试**:面向对象软件构造还包括自动化构建工具的使用,如Makefile或现代的Maven、Gradle,以及单元测试和集成测试的重要性,可能还会涉及JUnit等测试框架。 7. **反射与元编程**:这部分内容可能会讨论...
10. **第十章:Hibernate ORM** - Hibernate是一个流行的ORM(对象关系映射)框架,帮助开发者更方便地操作数据库。 11. **第十一章:Struts2框架** - Struts2是另一种MVC框架,讲解其工作原理和配置。 12. **第十...
10. **第十章:Spring Security** - 认证与授权:理解身份验证和授权的基本概念,以及Spring Security提供的安全机制。 - 自定义安全配置:学习如何根据需求定制Spring Security的配置,保护应用程序的安全。 11....
**第十章:MVC模式与JSP** - MVC模式的解释及其在Web开发中的应用 - JSP在MVC中的角色 - Struts、Spring MVC等框架如何实现MVC模式 **第十一章:JSP与JDBC** - 数据库连接池的概念和使用 - JSP中执行SQL查询 - 使用...
压缩包中的“10”可能指的是第十章的代码示例,这部分可能涉及到上述某个或多个主题的实际应用,比如可能会讲解如何使用Spring框架实现RESTful服务,或者介绍CDI和EJB的轻量化实践。然而,由于没有具体的章节内容,...
第十章探讨了如何利用Hadoop实现数据仓库,包括如何存储和分析大量数据以支持商业智能。 **11. 使用Pig进行数据处理(Data Processing Using Pig)** 第十一章介绍了Pig,这是一个高级语言,它简化了Hadoop中的...
“第十章 静态参数与session request response对象访问”讨论了如何在Action中访问HTTP请求、响应以及会话中的数据,以及如何设置和获取静态参数。 通过这个教程,开发者不仅可以了解Struts2的基本概念和工作原理,...
视频可能会覆盖Spring Initializr的使用,Maven或Gradle构建系统的配置,以及如何利用Spring Boot的Actuator进行应用监控。 教学大纲则为整个学习过程提供了路线图,列出了课程的主要章节和子话题。这通常包括...
第十章“开发工具”涵盖了IDE(如Eclipse、IntelliJ IDEA)、版本控制系统(如Git)、构建工具(如Maven、Gradle)等,熟练使用这些工具能提高开发效率。 第十一章“Linux操作系统”介绍了Linux命令行操作、文件...
在IT行业中,源代码是程序员用编程语言..."chap10"这个压缩包可能是一个课程的第十章代码示例,或者是某个特定功能的代码集。不论是什么,通过NetBeans的导入功能,我们可以轻松地在IDE中打开、理解和修改这些代码。
开发环境包括Java开发工具(如IntelliJ IDEA)、Spring Boot、Maven等;数据库选择MySQL,前端框架可以选择Bootstrap等。运行环境则需要Java运行时环境(JRE)和Web服务器(如Tomcat)。 5. 总体设计 系统采用MVC...
**第十章 监视** 监视功能使管理员能够实时查看流程的性能指标,如运行时间、任务完成情况等,以便优化流程效率和诊断问题。 总结来说,jbPM是一个功能强大的BPM解决方案,它提供了完整的工具链,从流程设计到执行...
#### 第十章 Validator **10.1 概述** - **验证器**:Validator提供了丰富的验证功能,用于验证用户提交的数据是否符合预期的要求。 **10.2** - **待续**:更多详细的验证器使用方法将在后续章节中介绍。 --- ...