標籤:建立 oncreate instance 測試檔案 安卓開發 androi cep java開發 title
轉載請註明出處:http://www.cnblogs.com/cnwutianhao/p/6606687.html
做Java開發或者安卓開發的同學經常都會遇到這樣一個問題,如果我們想調用A類裡面的一個私人方法B,然後在C類中使用。通常的直接調用方法是行不通的。也有人說那就把私人的變為公有的就完事了唄,但是凡事都有解決方案,不用改為公有。
進入正題:
有這樣一段代碼
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); method(); } private void method() { }}
現在我們想用Junit測試MainActivity中的私人方法method
如果我們想測試MainActivity裡面的私人方法method,直接調用是行不通的,這時候就用到了Java反射(Reflect)
首先,建立測試檔案MainActivityTest,繼承AndroidTestCase
public class MainActivityTest extends AndroidTestCase {}
然後,建立測試類別testMethod
public void testMethod() throws Exception {}
完整測試代碼
public class MainActivityTest extends AndroidTestCase { public void testMethod() throws Exception { MainActivity activity = new MainActivity(); Method testMethod = MainActivity.class.getDeclaredMethod("method"); testMethod.setAccessible(true); testMethod.invoke(activity); }}
至此,我們就可以使用MainActivity中的私人方法method了!
關注我的新浪微博,擷取更多Android開發資訊!
關注科技評論家,領略科技、創新、教育以及最大化人類智慧與想象力!
Java反射在Android中的使用