今天学习了junit测试(基于注解)
package com.own.cal;
public interface Calculator {
double calculatorSalary(Position position);
}
package com.own.cal;
public class CalculatorImpl implements Calculator {
@Override
public double calculatorSalary(Position position) {
// TODO Auto-generated method stub
double salary = 2000;
switch(position){
case BOSS:
salary = 100000;
break;
case EMPLOYEE:
salary = 3000;
break;
case MANAGER: salary = 50000;
break;
default:salary = 2000;
break;
}
return salary;
}
}
package com.own.cal;
public enum Position {
EMPLOYEE,MANAGER,BOSS
}
package com.own.cal;
public class RealCalculator {
//计算工资
private Calculator calculator;
//职位
private Position position;
public Calculator getCalculator() {
return calculator;
}
public void setCalculator(Calculator calculator) {
this.calculator = calculator;
}
public Position getPosition() {
return position;
}
public void setPosition(Position position) {
this.position = position;
}
/*
* 计算工资的方法
*/
public double calculateSalary(){
if(calculator == null){
throw new CalculatorNullException("计算工资不能为空");
}
if(position == null){
throw new PositionNullException("职位不能为空");
}
return calculator.calculatorSalary(position);
}
}
package com.own.cal;
public class CalculatorNullException extends RuntimeException {
public CalculatorNullException(String message){
super(message);
}
}
package com.own.cal;
public class PositionNullException extends RuntimeException {
public PositionNullException(String message){
super(message);
}
}
package com.easymock.test;
import static junit.framework.Assert.*;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import com.own.cal.Calculator;
import com.own.cal.CalculatorImpl;
import com.own.cal.CalculatorNullException;
import com.own.cal.Position;
import com.own.cal.RealCalculator;
public class RealCalculatorTest {
private Calculator mock;
private RealCalculator realCal;
@Before
public void setUp(){
//创建模拟对象
mock = EasyMock.createMock(Calculator.class);
realCal = new RealCalculator();
}
//测试计算
@Test
public void testCalculateSalary(){
realCal.setCalculator(new CalculatorImpl());
realCal.setPosition(Position.BOSS);
double actual = realCal.calculateSalary();
assertEquals(100000.0, actual,1.0);
realCal.setPosition(Position.EMPLOYEE);
actual = realCal.calculateSalary();
assertEquals(3000,actual,0.8);
}
//测试抛出未设置计算器异常
@Test(expected=CalculatorNullException.class)
public void testCalculatorNullException(){
// realCal.setCalculator(new CalculatorImpl());
realCal.setPosition(Position.BOSS);
double actual = realCal.calculateSalary();
assertEquals(100000.0, actual,1.0);
}
//测试方法的运行的时间
@Test(timeout=50)
public void testCalculatorRuntime(){
realCal.setCalculator(new CalculatorImpl());
realCal.setPosition(Position.BOSS);
double actual = realCal.calculateSalary();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch e.printStackTrace();
}
assertEquals(100000.0, actual,1.0);
}
}