溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android中怎么實(shí)現(xiàn)單元測試

發(fā)布時(shí)間:2021-06-26 15:11:07 來源:億速云 閱讀:126 作者:Leah 欄目:移動(dòng)開發(fā)

Android中怎么實(shí)現(xiàn)單元測試,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

Xml代碼

  1. < ?xml version="1.0" encoding="utf-8"?>   

  2. < manifest xmlns:android=
    "http://schemas.Android.com/apk/res/Android"   

  3. package="your.tests.package">   

  4. < application>   

  5. < uses-library Android:name="Android.test.runner" />   

  6. < /application>   

  7. < instrumentation Android:name=
    "Android.test.InstrumentationTestRunner"   

  8. Android:targetPackage="your.work.package"   

  9. Android:label="Tests for Api Demos."/>   

  10. < /manifest>   

  11. < ?xml version="1.0" encoding="utf-8"?> 

  12. < manifest xmlns:android=
    "http://schemas.Android.com/apk/res/Android" 

  13. package="your.tests.package"> 

  14. < application> 

  15. < uses-library Android:name="Android.test.runner" /> 

  16. < /application> 

  17. < instrumentation Android:name=
    "Android.test.InstrumentationTestRunner" 

  18. Android:targetPackage="your.work.package" 

  19. Android:label="Tests for Api Demos."/> 

  20. < /manifest> 

那么就可以做Android單元測試了,給出下面的實(shí)例;

1.用AndroidTestCase; 

Java代碼

public class SdcardTest extends AndroidTestCase {   public void test1(){   // Log.v()   File f=new File("/sdcard");   String[] l=f.list();   this.assertTrue(f.exists());   this.assertTrue(f.isDirectory());   this.assertTrue(f.list().length>0);   }   }   public class SdcardTest extends AndroidTestCase {  public void test1(){  // Log.v()  File f=new File("/sdcard");  String[] l=f.list();  this.assertTrue(f.exists());  this.assertTrue(f.isDirectory());  this.assertTrue(f.list().length>0);  }  }

2.用ActivityUnitTestCase 

Java代碼 

  1. public class ForwardingTest extends ActivityUnitTestCase
    < Forwarding> {   

  2. private Intent mStartIntent;   

  3. private Button mButton;   

  4. public ForwardingTest() {   

  5. super(Forwarding.class);   

  6. }   

  7. @Override   

  8. protected void setUp() throws Exception {   

  9. super.setUp();   

  10. // In setUp, you can create any shared test data, 
    or set up mock components to inject   

  11. // into your Activity. But do not call startActivity() 
    until the actual test methods.   

  12. mStartIntent = new Intent(Intent.ACTION_MAIN);   

  13. }   

  14. /**   

  15. * The name 'test preconditions' is a convention 
    to signal that if this   

  16. * test doesn't pass, the test case was not set up 
    properly and it might   

  17. * explain any and all failures in other tests. 
    This is not guaranteed   

  18. * to run before other tests, as junit uses 
    reflection to find the tests.   

  19. */   

  20. @MediumTest   

  21. public void testPreconditions() {   

  22. startActivity(mStartIntent, null, null);   

  23. mButton = (Button) getActivity().findViewById(R.id.go);   

  24. assertNotNull(getActivity());   

  25. assertNotNull(mButton);   

  26. }   

  27. /**   

  28. * This test demonstrates examining the way that 
    activity calls startActivity() to launch   

  29. * other activities.   

  30. */   

  31. @MediumTest   

  32. public void testSubLaunch() {   

  33. Forwarding activity = startActivity(mStartIntent, null, null);   

  34. mButton = (Button) activity.findViewById(R.id.go);   

  35. // This test confirms that when you click the 
    button, the activity attempts to open   

  36. // another activity (by calling startActivity) 
    and close itself (by calling finish()).   

  37. mButton.performClick();   

  38. assertNotNull(getStartedActivityIntent());   

  39. assertTrue(isFinishCalled());   

  40. }   

  41. /**   

  42. * This test demonstrates ways to exercise the Activity's life cycle.   

  43. */   

  44. @MediumTest   

  45. public void testLifeCycleCreate() {   

  46. Forwarding activity = startActivity(mStartIntent, null, null);   

  47. // At this point, onCreate() has been called, but nothing else   

  48. // Complete the startup of the activity   

  49. getInstrumentation().callActivityOnStart(activity);   

  50. getInstrumentation().callActivityOnResume(activity);   

  51. // At this point you could test for various configuration 
    aspects, or you could   

  52. // use a Mock Context to confirm that your activity 
    has made certain calls to the system   

  53. // and set itself up properly.   

  54. getInstrumentation().callActivityOnPause(activity);   

  55. // At this point you could confirm that the activity 
    has paused properly, as if it is   

  56. // no longer the topmost activity on screen.   

  57. getInstrumentation().callActivityOnStop(activity);   

  58. // At this point, you could confirm that the activity 
    has shut itself down appropriately,   

  59. // or you could use a Mock Context to confirm that your 
    activity has released any system   

  60. // resources it should no longer be holding.   

  61. // ActivityUnitTestCase.tearDown(), which is always 
    automatically called, will take care   

  62. // of calling onDestroy().   

  63. }   

關(guān)于Android中怎么實(shí)現(xiàn)單元測試問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI