Maven学习笔记(八)Maven的入门使用—3.编写测试代码

来源:互联网 发布:单片机地址总线 编辑:程序博客网 时间:2024/05/01 01:55
    一般来说为了使项目结构保持清晰,主代码和测试代码应该分别位于独立的目录中。    Maven项目中默认的主代码目录是src\main\java,对应的Maven项目中默认的测试代码目录是src\test\java。因此,首先我们创建该目录。    在Java领域中,由Kent Beck和Erich Gamma建立的JUnit是事实上的单元测试标准。要使用JUnit,首先需要为HelloWorld项目添加一个JUnit依赖,修改项目的POM文件如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.xv.maventest</groupId>    <artifactId>helloworld</artifactId>    <version>1.0-SNAPSHOT</version>    <name>Maven Hello World Project</name>    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.7</version>            <scope>test</scope>        </dependency>    </dependencies></project>
    代码中添加了dependencies元素,该元素下可包含多个dependency元素,以声明项目的依赖。如上代码所示,添加了一个对于JUnit的依赖。添加了依赖声明后,Maven就能够自动从仓库中下载junit-4.7.jar。这是使用Maven构建项目的便利之一。    上述的代码中还有一个元素为scope,scope为依赖范围,若依赖范围为test则表示该依赖只对测试有效。换句话说,就是测试代码中的import Junit代码是没有问题的,但是如果在主代码中用import Junit代码,就会造成编译错误。如果不声明依赖范围,那么默认值就是compile,表示该依赖对主代码和测试代码都有效。    配置了测试依赖,那么接下来就开始编写测试类:
package com.xv.maventest.helloworld;import static org.junit.Assert.assertEquals;import org.junit.Test;public class HelloWorldTest{    @Test    public void testSayHello(){        HelloWorld helloworld = new HelloWorld();        String result = helloworld.sayHello();        assertEquals("HelloWorld",result);    }}
    一个典型的单元测试包含三个步骤:1.准备测试类及数据;2.执行要测试的行为;3.检查结果。    测试用例编写完毕后,可以调用Maven进行测试。运行如下命令:
mvn clean test
    因为本人也是刚开始学习,因此本地仓库并没有Junit相关的jar包,因此执行该命令后,Maven首先会去下载JUnit的4.7版本,正是pom.xml文件声明依赖的部分,如下图所示:

这里写图片描述

    下载完毕后,Maven会解决依赖问题,之后会执行测试,如下图所示:

这里写图片描述

    在上面的图中,我们可以看到虽然我们是在运行测试,但是Maven显然不止执行了这两个任务,实际上还有clean:clean,resources:resources,compile:compile,resources:testResources以及compile:testCompile。    在Maven执行测试之前,它会自动先执行项目主资源处理,主代码编译,测试资源处理,测试代码编译等工作,这是Maven生命周期的一个特性。    在上图中我们可以看到一个测试报告,包括了一共运行了多少测试,失败了多少,出错了多少,跳过了多少。目前来说我们测试是通过了。
0 0