1. 程式人生 > >Junit測試private方法

Junit測試private方法

布爾 format void -h frame mat 取消 orm getclass

  1. package com.bill99.junit;
  2. public class ACase {
  3. private String echoRequest(String request) {
  4. return "Hello!"+request;
  5. }
  6. private String echoRequest() {
  7. return "Hello!";
  8. }
  9. }
  1. package com.bill99.junit;
  2. import java.lang.reflect.Method;
  3. import junit.framework.Assert;
  4. import org.junit.Before;
  5. import org.junit.Test;
  6. public class ACaseTest {
  7. ACase a =null;
  8. @Before
  9. public void setUp() throws Exception {
  10. a = new ACase();
  11. }
  12. @Test
  13. public void testNoParamEchoRequest() throws Exception {
  14. //測試沒有參數的echoRequest()方法
  15. Method testNoParamMethod = a.getClass().getDeclaredMethod("echoRequest", null);
  16. //Method對象繼承自java.lang.reflect.AccessibleObject,父類方法setAccessible可調
  17. //將此對象的 accessible 標誌設置為指示的布爾值。值為 true 則指示反射的對象在使用時應該取消 Java 語言訪問檢查。值為 false 則指示反射的對象應該實施 Java 語言訪問檢查。
  18. //要訪問私有方法必須將accessible設置為true,否則拋java.lang.IllegalAccessException
  19. testNoParamMethod.setAccessible(true);
  20. //調用
  21. Object result = testNoParamMethod.invoke(a, null);
  22. System.out.println(result);
  23. Assert.assertNotNull(result);
  24. }
  25. @Test
  26. public void testParamEchoRequest() throws Exception {
  27. //測試帶有參數的echoRequest(String request)方法
  28. Method testNoParamMethod = a.getClass().getDeclaredMethod("echoRequest",String.class);
  29. testNoParamMethod.setAccessible(true);
  30. //調用
  31. Object result = testNoParamMethod.invoke(a, "this is a test information");
  32. System.out.println(result);
  33. Assert.assertNotNull(result);
  34. }
  35. }

https://blog.csdn.net/iameyama/article/details/50411212

IDEA配置junit:

http://www.360doc.com/content/17/0701/11/10072361_667938060.shtml

Junit測試private方法