为了使项目结构保持清晰,主代码和测试代码应该分别位于独立的目录中,Maven项目中的测试代码目录是src/test/java
,在编写测试用例前,应该先创建该目录。
在Java中,JUnit是事实上的单元测试标准,要使用JUnit首先需要为Hello Word项目添加一个JUnit依赖,修改项目的POM,示例代码如下:
<?xml version="1.0" ecoding = "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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.ambari</groupId>
<artifactId>ambari</artifactId>
<name>Ambari Main</name>
<version>2.0.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
代码中添加了dependencies元素,该元素下可以包含多个dependency元素以声明项目的依赖
这里添加一个依赖—-groupId、artifactId是junit,version是4.7,这三个元素是任何一个Maven项目最基本的坐标,有了这段声明,Maven就能够自动下载Junit-4.7.jar(自动访问中央仓库,下载需要的文件)
其中值为test的scope元素,表示的为依赖范围,若依赖范围是test则表示该依赖只对测试有效(即在测试代码中import JUnit代码没有问题,但是在主代码中用import JUnit代码,就会造成编译出错)
如果不声明依赖的范围,默认为complie,即该依赖在主代码和测试代码中都是有效的
一个典型的测试单元
- 准备测试类及数据
- 执行要测试的行为
- 检查结果
Tips:在Maven执行测试(test)之前,它会想自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作,这是Maven生命周期的一个特性。