下载地址(hamcrest&JUnit)
https://github.com/junit-team/junit4/wiki/Download-and-Install
程序一(加减乘除):
public class Calculator {
private static int result; //静态变量,用于存储运行结果
public int getResult(){
return result;
}
public void add(int n){
result=result+n;
}
public void substract(int n){
result=result-1; //Bug:正确的应该是result=result-n
}
public void multiply(int n){
}//此方法尚未写好
public void divide(int n)throws Exception{
if(n==0)
throw new Exception("除数不能为0");
result=result/n;
}
public void square(int n){
result=n*n;
}
public void squareRoot(int n){
for(;;); //Bug:死循环
}
public void clear(){ //将结果清零
result=0;
}
}
Ecplise创建JUnit:
idea创建Junit:
第一步:
第二步:下载JUnit.jar
第三步:在相应的类中创建Test
第四步:选择需要测试的方法
测试代码:
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest {
Calculator calculator = new Calculator();
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void add() {
calculator.add(2);
//采用断言的形式查看结果
assertEquals(4,calculator.getResult());
}
@Test
public void substract() {
}
@Ignore //跳过
public void multiply() {
}
@Test(expected = Exception.class)
public void divide() throws Exception{
calculator.divide(0);
}
@Test
public void square() {
}
@Test(timeout = 1000) //1秒
public void squareRoot() {
calculator.squareRoot(1);
}
@Test
public void clear() {
}
}
测试结果:
注意事项:
1#测试方法上面必须使用@Test注解进行修饰。
2#测试方法必须使用public void 进行修饰,不能带有任何参数。
3#新建一个源代码目录用来存放测试代码。
4#测试类的包应该与被测试类的包保持一致。
5#测试单元中的每一个方法必须独立测试,每个测试方法之间不能有依赖。
6#测试类使用Test做为类名的后缀(非必要)。
7#测试方法使用test作为方法名的前缀(非必要)。
知识补充:
1#@BeforeClass所修饰的方法在所有方法加载前执行,而且他是静态的在类加载后就会执行该方法,在内存中只有一份实例,适合用来加载配置文件。
2#@AfterClass所修饰的方法在所有方法执行完毕之后执行,通常用来进行资源清理,例如关闭数据库连接。
3#@Before和@After在每个测试方法执行前都会执行一次。
4#@Test(excepted=XX.class) 在运行时忽略某个异常。
5#@Test(timeout=毫秒) 允许程序运行的时间。
6#@Ignore 所修饰的方法被测试器忽略。
7#RunWith 可以修改测试运行器 org.junit.runner.Runner