任务描述
补全TestRunner.java
中的代码,如果测试类JunitSubTest.java
中的测试都通过,则main
函数会打印true。
环境配置
环境配置:Linux主机+JDK 1.8+Junit 4.12。
首先确保自己在linux主机装好了java环境,配置好环境变量。
然后下载两个jar包:
junit 4.12 :Release JUnit 4.12 · junit-team/junit4 · GitHub
hamcrest-core-1.3.jar : http://central.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
让后把这两个包放到jdk安装的lib目录下,本机的JDK安装目录如下:
/home/soft/jdk1.8.0_111/lib# ls
amd64 hamcrest-core-1.3.jar jexec packager.jar
ant-javafx.jar ir.idl junit-4.12.jar sa-jdi.jar
ct.sym javafx-mx.jar missioncontrol tools.jar
dt.jar jconsole.jar orb.idl
然后修改本机环境变量,
vim ~/.bashrc
修改成如下:
export JAVA_HOME=/home/soft/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/junit-4.12.jar:$JAVA_HOME/lib/hamcrest-core-1.3.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
这里着重看下CLASSPATH,JAVA_HOME和PATH如果设置过,就不用修改了。
然后
source ~/.bashrc
让环境变量生效。
新建两个java文件:Calculate.java和CalculateTest.java。
//Calculate.java
package com.trustie.junitest;
public class Calculate {
public int sum(int var1, int var2) {
System.out.println("相加的值是: " + var1 + " + " + var2);
return var1 + var2;
}
public static void main(String[] args) {
System.out.println("hh");
}
}
//CalculateTest.java
package com.trustie.test;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.trustie.junitest.Calculate;
public class CalculateTest {
Calculate calculation = new Calculate();
int sum = calculation.sum(2, 5);
int testSum = 7;
@Test
public void testSum() {
System.out.println("@Test sum(): " + sum + " = " + testSum);
assertEquals(sum, testSum);
}
}
然后编译执行:
javac -d . Calculate.java
javac -d . CalculateTest.java
java org.junit.runner.JUnitCore com.trustie.test.CalculateTest
就可以看到如下打印:
至此,Junit环境配置成功,可以在本机命令行下运行Junit测试。
其实在命令行中运行JUnit测试,使用了org.junit.runner.JUnitCore类。 这个类提供了runClasses()方法,它允许运行一个或多个测试类。runClasses()方法返回类型是org.junit.runner.Result对象类型。 这个对象可以被用来收集关于测试信息。此外,如果有一个失败的测试,可以用org.junit.runner.notification.Failure对象保存失败测试的描述。
补全TestRunner.java
中的代码,如果测试类JunitSubTest.java
中的测试都通过,则main
函数会打印true。
本关涉及的代码文件TestRunner.java
的代码如下:
package step4;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
//请在Begin/End内加一行代码,要求如果测试类JunitSubTest.java中的测试都通过,则main函数会打印true
/******************************Begin**************************************************/
Result result = JUnitCore.runClasses(JunitSubTest.class);
/******************************End****************************************************/
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}