單元測(cè)試(Junit3.8)原則和測(cè)試用例
(1)對(duì)方法有拋出異常的方法設(shè)計(jì)測(cè)試用例
如果被測(cè)試方法拋出異常。則需要設(shè)計(jì)兩個(gè)測(cè)試用例
1),設(shè)計(jì)正常的用例
在測(cè)試用例中try catche 然后捕獲后設(shè)置斷言為Assert.fail();
public void testDivide(){
int result = 0;
try{
result = cal.divide(6, 2);
}
catch (Exception e){
e.printStackTrace();
Assert.fail("測(cè)試失敗");
}
Assert.assertEquals(3, result);
}
2),設(shè)計(jì)拋出異常的用例
public void testDivideDivideByZero(){
Throwable tx = null;
try{
cal.divide(6, 0);
Assert.fail("測(cè)試失敗");
}
catch(Exception ex){
tx = ex;
}
//判斷是否拋了異常
Assert.assertNotNull(tx);
//判斷異常類型是否一致
Assert.assertEquals(Exception.class, tx.getClass());
//判斷異常信息是否一致
Assert.assertEquals("除數(shù)不能為0", tx.getMessage());
}
3)、私有方法的測(cè)試,使用類的反射機(jī)制
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();
}
}