码迷,mamicode.com
首页 > 其他好文 > 详细

Maven中的单元测试

时间:2015-05-24 08:55:58      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:dependency   命令   maven   

1:首先查看项目的依赖

首先命令行切换到pom.xml文件所在的目录下,然后运行下面的命令

mvn dependency:resolve

如下图所示效果
技术分享
如果我们想知道你项目的整个依赖树,可以运行 dependency:tree 目标。如下图:
技术分享
如果我们还想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行:

mvn install -X

从调试输出我们看到一些依赖管理系统工作的内部信息。

2:编写单元测试

首先,在 src/test/java 下面创建包com.gao.test。
在测试类中我们要用到assertEquals()方法。
然后添加测试范围依赖

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<scope>test</scope>
</dependency>

当你往 pom.xml 中添加了这个依赖以后,运行 mvn dependency:resolve 你会看到commons-io 出现在在依赖列表中,范围是 test 。在我们可以运行该项目的单元测试之前,我们还需要做一件事情。 那就是创建单元测试依赖的 classpath 资源。

3:添加单元测试资源

一个单元测试需要访问针对测试的一组资源。 通常你需要在测试 classpath 中
存储一些包含期望结果的文件,以及包含模拟输入的文件。
接着就是执行单元测试了
既然你的项目已经有单元测试了,那么让它们运行起来吧。 你不必为了运行单元测试
做什么特殊的事情, test 阶段是 Maven 生命周期中常规的一部分。 当你运行 mvn
package 或者 mvn install 的时候你也运行了测试。 如果你想要运行到 test 阶段为
止的所有生命周期阶段,运行 mvn test 。
技术分享

4:忽略测试失败

通常,你会开发一个带有很多失败单元测试的系统。 如果你正在实践测试驱动开发
(TDD),你可能会使用测试失败来衡量你离项目完成有多远。 如果你有失败的单元测试,但你仍然希望产生构建输出,你就必须告诉 Maven 让它忽略测试失败。 当Maven 遇到一个测试失败,它默认的行为是停止当前的构建。 如果你希望继续构建项目,即使 Surefire 插件遇到了失败的单元测试,你就需要设置 Surefire 的testFailureIgnore 这个配置属性为 true。

<project>
[...]
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>
[...]
</project>

该插件文档 (http://maven.apache.org/plugins/maven-surefire-plugin/testmojo.
html) 说明,这个参数声明为一个表达式:
这个表达式可以从命令行通过 -D 参数设置。

mvn test -Dmaven.test.failure.ignore=true

5.跳过单元测试

你可能想要配置 Maven 使其完全跳过单元测试。 可能你有一个很大的系统,单元
测试需要花好多分钟来完成,而你不想在生成最终输出前等单元测试完成。 你可能
正工作在一个遗留系统上面,这个系统有一系列的失败的单元测试,你可能仅仅想要
生成一个 JAR 而不是去修复所有的单元测试。 Maven 提供了跳过单元测试的能力,
只需要使用 Surefire 插件的 skip 参数。 在命令行,只要简单的给任何目标添加
maven.test.skip 属性就能跳过测试:

mvn install -Dmaven.test.skip=true

当 Surefire 插件到达 test 目标的时候,如果 maven.test.skip 设置为 true ,它就
会跳过单元测试。 另一种配置 Maven 跳过单元测试的方法是给你项目的 pom.xml 添
加这个配置。 你需要为你的 build 添加 plugin 元素。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

6.构建一个打包好的命令行应用程序

下面的小节介绍了使用 Maven Assembly 插件的预定义装配描述符生成一个可分发的 JAR 文件的过程,该文件包含了项目的二进制文件和所有的依赖。Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件。 你可以使用 Maven Assembly 插件以你希望的任何形式来装配输出,只需定义一个自定义的装配描述符。 本章我们将会使用预定义的 jarwith-dependencies 格式。 要配置 Maven Assembly 插件, 我们需要在 pom.xml 中的build 配置中添加如下的 plugin 配置。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    </configuration>
</plugin>

添加好这些配置以后,你可以通过运行 mvn assembly:assembly 来构建这个装配。
jar-with-dependencies 格式创建一个包含所有项目的二进制代码以及所有依赖解压出来的二进制代码的 JAR 文件。
单元测试就谈到这里。

Maven中的单元测试

标签:dependency   命令   maven   

原文地址:http://blog.csdn.net/gao36951/article/details/45938313

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!