测试很重要,不解释。在此介绍jUnit测试工具的使用。
环境:
eclipse, Maven
第一步: 在Eclipse中创建一个空的Maven工程
这个空的Maven工程自带了一个版本的jUnit,这个在 pom.xml 文件中可以看到,我们可以改成最新的junit版本,或者不变。
<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>kuangcaibao</groupId>
<artifactId>junitTest</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>junitTest</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
第二步:编写测试示例
在Eclipse的Maven工程中,其默认创建了2个文件夹:main 和 test, 在main文件夹中存放我们实现的代码类,在test中实现我们的测试类。例如我们在main中创建一个 Calculator 类,那么对应的测试类名为 CalculatorTest 类,一一对应,这样使用Eclipse中的 junit test功能选项就可以运行测试类了,输出测试报告。(其实名称是不重要的。)下面贴出对应的代码。
// Calculator.java
package kuangcaibao.junitTest;
public class Calculator {
public int evaluate(String expression) {
int sum = 0;
for(String summand : expression.split("\\+")) {
sum += Integer.valueOf(summand);
}
return sum;
}
// CalculatorTest.java
package kuangcaibao.junitTest;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CaculatorTest {
@Test
public void evaluatesExpression() {
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(6, sum);
}
@Test
public void evaluatesExpression1() {
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(-6, sum);
}
}
运行测试用例,输入测试结果。鼠标右击junitTest工程 -> Run As -> JUnit Test, 或者是 Run As -> Maven Test就会在 Eclipse的相应窗口上输入测试结果了。
jUnit相关语法:
jUnit是一个测试工具,我们需要使用jUnit测试工具,那么我们就应该遵循jUnit的测试语法。这些介绍在jUnit的官网上面都可以看到。先简单测试下jUnit的工作方式,看下下面2个测试类,CalculatorTest1.java, CalculatorTest2.java
// CalculatorTest1.java
package kuangcaibao.junitTest;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculatorTest1 {
@Test
public void Test1() {
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(6, sum);
}
}
// CalculatorTest2.java
package kuangcaibao.junitTest;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculatorTest2 {
@Test
public void Test2() {
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(-6, sum);
}
}
运行jUnit Test,可以看到输出结果: Runs: 2/2 Errors:0 Failures: 1,第2个测试失败了,这也符合我们的测试预期。可以看到除了将测试文件放到 test 文件夹下,在eclipse中启动测试时,会自动在 test 文件夹下去找测试实例,和文件名没有关系,估计是注解 @Test 起了作用。现在应该知道jUint是个什么回事了。
在上面的例子中,我们仅仅用到了 @Test 和 assertEquals() 这2个最基本,也是最重要的元素。更多介绍在官网上有详细的描述。
Assertions 的各种用法:https://github.com/junit-team/junit/wiki/Assertions
测试用例执行顺序的说明: https://github.com/junit-team/junit/wiki/Aggregating-tests-in-suites