Junit3.8プライベートメソッドテスト

2526 ワード

1.クラスのプライベートメソッドをテストする場合は、2つの方法があります.1)メソッドのアクセス修飾子を変更し、privateをdefaultまたはpublicに変更します(ただし、この方法は推奨されません).2)反射を使用してテストクラスでターゲットクラスを呼び出すプライベートメソッド(推奨).
 1 package junit;  2 
 3 public class Calculator2  4 {  5     private int add(int a, int b)  6  {  7         return a + b;  8  }  9 } 10 
11 
12 package junit; 13 
14 import java.lang.reflect.Method; 15 
16 import junit.framework.Assert; 17 import junit.framework.TestCase; 18 /**
19  *  ,  20  */
21 public class Calculator2Test extends TestCase 22 { 23     public void testAdd() 24  { 25         try
26  { 27             Calculator2 cal2 = new Calculator2(); 28 
29             Class<Calculator2> clazz = Calculator2.class; 30 
31             Method method = clazz.getDeclaredMethod("add", new Class[] { 32  Integer.TYPE, Integer.TYPE }); 33 
34             method.setAccessible(true); 35 
36             Object result = method.invoke(cal2, new Object[] { 2, 3 }); 37 
38             Assert.assertEquals(5, result); 39 
40  } 41         catch (Exception ex) 42  { 43  Assert.fail(); 44  } 45 
46  } 47 }