maven3实战之maven使用入门(编写测试代码)
----------
为了使项目结构保持清晰,主代码与测试代码应该分别位于独立的目录中,maven项目中默认的主代码目录是:src/main/java,对应地,maven项目中默认的测试代码目录是:src/test/java。因此,在编写测试用例之前,应当先创建该目录。
在java世界中,由kent beck和erich gamma建立的Junit是事实上的单元测试标准。要使用JUnit,首先需要为项目添加一个JUnit依赖。如例:
<?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.juvenxu.mvnbook</groupId> <artifactId>hello-world</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元素以声明项目的依赖。这里添加了一个依赖---groupId是junit,artifactId是junit,version是4.7。前面提到groupId,artifactId和version是任何一个Maven项目最基本的坐标,JUnit也不例外,有了这段声明,maven就能够自动下载junit-4.7.jar。也许你会问,maven从哪里下载这个jar呢?在maven之前,可以去JUnit的官方网站下载分发包,有了maven,它会自动访问中央仓库(http://repo1.maven.org/maven2/),下载需要的文件。
上述POM代码中还有一个值为test的元素scope,scope为依赖范围,若依赖范围为test则表示该依赖只对测试有效。换句话说,测试代码中的import JUnit代码是没有问题的,但是如果在主代码中用import JUnit代码,就会造成编译错误。如果不声明依赖范围,那么默认值就是compile,表示该依赖对主代码和测试代码都有效。
配置了测试依赖,接着就可以编写测试类。测试用例编写完毕之后就可以调用maven执行测试。运行:mvn clean test
注意:
由于历史原因,maven的核心插件之一---compile插件默认只支持编译java1.3,如果我们在主代码或测试代码中使用了java5或java6的语法,程序就会编译出错,这个时候我们应该显示地声明插件并注明使用java的版本,如:
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> ... </project>