单元测试(Junit3.8)原则和测试用例
(1)对方法有抛出异常的方法设计测试用例
如果被测试方法抛出异常。则需要设计两个测试用例
1),设计正常的用例
在测试用例中try catche 然后捕获后设置断言为Assert.fail();
public void testDivide(){
int result = 0;
try{
result = cal.divide(6, 2);
}
catch (Exception e){
e.printStackTrace();
Assert.fail("测试失败");
}
Assert.assertEquals(3, result);
}
2),设计抛出异常的用例
public void testDivideDivideByZero(){
Throwable tx = null;
try{
cal.divide(6, 0);
Assert.fail("测试失败");
}
catch(Exception ex){
tx = ex;
}
//判断是否抛了异常
Assert.assertNotNull(tx);
//判断异常类型是否一致
Assert.assertEquals(Exception.class, tx.getClass());
//判断异常信息是否一致
Assert.assertEquals("除数不能为0", tx.getMessage());
}
3)、私有方法的测试,使用类的反射机制
public void testAdd()
{
try{
Calculator cal = new Calculator();
Class<Calculator> clazz = Calculator.class;
Method method = clazz.getDeclaredMethod("add", new Class[] {
Integer.TYPE, Integer.TYPE });
method.setAccessible(true);
Object result = method.invoke(cal, new Object[] { 2, 3 });
Assert.assertEquals(5, result);
}
catch (Exception ex){
Assert.fail();
}
}