包设计:
Calculator类设计:
package junitTestCast;
public class Calculator {
private static int 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) { result = result / n; }
public void squareRoot(int n) { for (; ;) ;} //Bug : 死循环
public void clear() { result = 0; }// 将结果清零
public int getResult(){ return result;}
}
CalculatorTest类(在Calculator.java上右键new->JUnit Test Cast)设计:
package junitTestCast;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
@Before
public void setUp() throws Exception {
calculator.clear();
}
@Test
public void testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5, calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
System.out.println("你看不到我");
calculator.multiply(2);
}
@Test(timeout=1000)
public void testsquareRoot () {
System.out.println("检测是否在指定时间内运行完成 ");
calculator.squareRoot (8);
}
@Test(expected=ArithmeticException.class)
public void testDivideZero () {
System.out.println("检测是否抛出了我们指定的异常");
calculator.divide(0);
}
}
run JUnit 4结果: