MoinMoin   Android JUnit UserPreferences
 
Help Info Print View Search Diffs Edit
 À妽º   µµ¿ò¸»   Ã£±â   ´ë¹®   ¹Ù²ï±Û 

  1. ¸ñÀû
  2. Android JUnit
    1. Android JUnit ±³À°
  3. °ü·Ã ¼­Àû
  4. °ü·Ã »çÀÌÆ®
Since 2010. 7. 8.

¸ñÀû

Android JUnit

  • ?AndroidTestCase (instrumentation framework¸¦ »ç¿ëÇÏÁö ¾ÊÀ½)
    • SUTÀÇ Context¿Í °°Àº system object¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â method Á¦°ø
    • resource file, file, DB µî¿¡ Á¢±Ù °¡´É

  • ?InstrumentationTestCase
    • Junit ?TestCase¸¦ È®ÀåÇÏ¿© Activity Å×½ºÆÃ
    • event¸¦ ÇØ´ç application¿¡ Àü´Þ °¡´É
    • activityÀÇ ½ÃÀÛ°ú Á¾·á±îÁöÀÇ »óŸ¦ ¸ð´ÏÅ͸µ °¡´É.

    Base ?TestCase ?TestCase Á¾·ù Ư¡
    ?AndroidTestCase * *
    * ?ApplicationTestCase Àüü applicationÀ» Å×½ºÆÃ. application¿¡ mock Context¸¦ ³Ö¾î¼­ applicationÀÌ ½ÃÀÛÇϱâ Àü¿¡ test parameter¸¦ ÃʱâÈ­ °¡´É. applicationÀÌ Á¾·áµÇ±â Àü »óŸ¦ È®ÀÎ °¡´ÉÇÔ.
    * ?ProviderTestCase2 ´ÜÀÏ ?ContentProvider¸¦ µ¶¸³ÀûÀ¸·Î Å×½ºÆÃ. ?MockContentResolver »ç¿ëÀÌ Á¦ÇѵÊ. ?IsolatedContext¸¦ »ç¿ë. OS¿Í´Â º°°³·Î Å×½ºÆÃ.
    * ?ServiceTestCase ´ÜÀÏ Service¸¦ µ¶¸³ÀûÀ¸·Î Å×½ºÆÃ. mock Context³ª mock ApplicationÀ» »ç¿ëÇϰųª Android¿¡¼­ Context¿Í ?MockApplicationÀ» Á¦°ø.
    ?InstrumentationTestCase * *
    * ?ActivityTestCase Activity test class¿¡ ´ëÇÑ base class
    * ?SingleLaunchActivityTestCase ´ÜÀÏ activity¿¡ ´ëÇÑ test. setup°ú teardownÀÌ 1¹ø¸¸ È£ÃâµÊ.
    * ?SyncBaseInstrumentation content providerÀÇ synch Å×½ºÆ®. test sync ½ÃÀÛÀü¿¡ instrument¸¦ ÀÌ¿ëÇØ¼­ sync¸¦ cancelÀ̳ª disable½Ãų ¼ö ÀÖ´Ù.
    * ?ActivityUnitTestCase ´ÜÀÏ activity¿¡ ´ëÇØ¼­ µ¶¸³ test½ÇÇà. mock context³ª applciaitonÀ» ³Ñ°ÜÁÙ ¼ö ÀÖ´Ù.
    * ?ActivityInstrumentationTestCase2 ÀÏ¹Ý system ȯ°æ¿¡¼­ ´ÜÀÏ activity¸¦ Å×½ºÆ®. mock context¸¦ »ç¿ëÇÒ ¼ö ¾øÁö¸¸ mock intent´Â °¡´É. UI thread¿¡¼­ test method¸¦ ½ÇÇàÇÒ ¼ö À־ key³ª touch À̺¥Æ®¸¦ applicaiton¿¡°Ô º¸³¾ ¼ö ÀÖ´Ù.
    Assert class * *
    * ?MoreAsserts regular expression matchingÀ» Áö¿øÇÏ´Â assertion Æ÷ÇÔ. ex) assert?ContainsRegex
    * ?ViewAsserts Android View¿Í °ü·ÃµÈ assertion Æ÷ÇÔ. ex) assert?HasScreenCoordinates. ƯÁ¤ View°¡ x, y À§Ä¡¿¡¼­ visibleÇÑ screenÀ» Áö¿øÇÏ´ÂÁö ¿©ºÎ È®ÀÎ, À§»ó ¹× Á¤·Ä Å×½ºÆÃ.
    Mock object class * *
    * ?IsolatedContext
    * ?RenamingDelegatingContext
    * ?MockApplication, ?MockContentResolver, ?MockContext, ?MockDialogInterface, ?MockPackageManager, ?MockResources Å×½ºÆÃ¿¡ »ç¿ëÇÒ mock system object »ý¼º.

¿ë¾î¿¡ ´ëÇÑ ÀÌÇØ°¡ ÇÊ¿ä : Instrumentation, Activity, Application, Provider, Service, ?SingleLaunchActivity
Instrumentation : System <-> Application »çÀÌ¿¡¼­ ÀϾ´Â ¸ðµç »óÈ£ÀÛ¿ë¿¡ ´ëÇØ¼­ °¨½Ã°¡ °¡´É. ¸ðµç »óÈ£ÀÛ¿ë¿¡ ´ëÇØ¼­ °¨½Ã°¡ °¡´ÉÇϱ⠶§¹®¿¡ ApplicationÀÌ ½ÇÇàµÇ±â Àü¿¡ ¹Ì¸® ¸¸µé¾îÁö´Â°Ô ´ç¿¬ÇÏ´Ù. °°Àº ÀÌÀ¯·Î code¿¡ µé¾î°¡´Â °ÍÀÌ ¾Æ´Ï¶ó ?AdnroidManifest.xml¿¡ ¼±¾ðµÇ¾î¾ß ÇÑ´Ù.

  • ±âŸ :
    • ?SyncBaseInstrumentation : content providerÀÇ µ¿±âÈ­ Å×½ºÆÃ. instrument¸¦ ÀÌ¿ëÇØ¼­ Å×½ºÆ® ½ÃÀÛÀü¿¡ ±âÁ¸¿¡ ÀÖ´ø µ¿±âÈ­¸¦ Ãë¼ÒÇÏ°í µ¿ÀÛµÇÁö ¾Ê°ÔÇÑ´Ù.

  • ¸ñÀû :
      Á¶¸¸°£ Android °³¹ßÀ» ½ÃÀÛÇÒ °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î ¾Èµå·ÎÀ̵忡¼­ JUnitÀÌ ¾î¶²½ÄÀ¸·Î µ¹¾Æ°¡´ÂÁö¸¦ º¸¿©ÁÖ±â À§ÇÔ.

  • ¼ø¼­ :
    1. ȯ°æ¼³Á¤
      1. ProjectÀÛ¼º
      2. Test Project°¡ ÇÔ²² ÀÛ¼ºµÇ´Â °Í
    2. ±¸Á¶
    3. »ó¼Ó
      1. Á¾·ù
      2. ÇöÀç »ç¿ëÇϰí ÀÖ´Â ?TestCase (?ActivityUnitTestCase)
    4. setUp, tearDown
    5. °£·«ÇÑ TestÀÛ¼º

  1. ±âº»¿ë¾î
      Activity, Provider, Service
  2. Thread
      UI Test¿¡ Çʼö
  3. DB
  4. UI Control
  5. Mock
      Mock¿¡ ´ëÇÑ °³³ä, ÇØ´ç Test¿¡ MockÀÇ Çʿ俩ºÎ ÆÇ´Ü, Mock »ç¿ë ¹æ¹ý

  • Android¿¡¼­ instrumentationÀ¸·Î Å×½ºÆ®Ç϶ó°í Á¦°øÇÏ´Â class
  • test´ë»ó applicationÀ» Á¦¾îÇϱâ À§ÇÑ ¸ñÀû
    • test application¿Í main applicationÀ» µ¿ÀÏÇÑ process¿¡¼­ ½ÇÇà
    • runtime Áß¿¡ test °á°ú¸¦ »©³»¿À´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÔ.
  • Áï runtimeÁß¿¡ Àüü test ȯ°æÀ» ÃѰýÇÏ´Â ¿ªÇÒ.
  • Å×½ºÆÃ ¼ø¼­
    1. test application ½ÇÇà
      • Activity Manager(system utility)¸¦ ¸ÕÀú ½ÇÇà
      • Activity Manager´Â test runner¸¦ ½ÃÀÛÇϰí Á¦¾îÇϱâ À§Çؼ­ instrumentation framework¸¦ »ç¿ëÇÑ´Ù.
      • ±âÁ¸¿¡ ½ÇÇà ÁßÀÎ main applicationÀ» Á¾·á
    2. main application ½ÇÇà

  • test application ½ÇÇà -> test ´ë»óÀÌ µÇ´Â application À» µ¿ÀÏÇÑ process¿¡ loadÇÔ -> test case classÀÇ °¢ method¸¦ È£ÃâÇÑ´Ù

  • run?OnUiThread(), wait?ForIdleSync()
private TextView tv; 
 
protected void setUp() throws Exception{ 
    super.setUp(); 
    mInstrumentation = getInstrumentation(); 
 
    tv = (TextView) getActivity().findViewById(com.xxxx.myactivity.R.id.textview01); 
} 
 
public void test1(){ 
    getActivity().runOnUiThread(new Runnable(){ 
        tv.requestFocus(); 
    } 
    }); 
    mInstrumentation.waitForIdleSync(); 
    this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER); 
} 
 

  • touch mode ²ô±â
      ?ActivityInstrumentationTestCase2.set?ActivityTouchMode(false)

  • unlocking emulator
uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 
 
mKeyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
mLock = mKeyGuardManager.newKeyguardLock("activity_classname"); 
mLock.disableKeyguard(); 

instrument »ç¿ë¹ý¿¡ ´ëÇØ¼­ ÀÍÈ÷´Âµ¥ µµ¿òÀÌ µÇ´Ù.
https://github.com/jooyunghan/Android-testing

Android JUnit ±³À°

¾Èµå·ÎÀ̵忡¼­ Á¦°øÇÏ´Â JUnitÀ¸·Î °³¹ßÀÚ°¡ ÀÚ½ÅÀÌ ÀÛ¼ºÇÏ´Â ±â´É¿¡ ´ëÇØ¼­ ÀÚµ¿È­µÈ Å×½ºÆ®¸¦ Á÷Á¢ ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï µ½´Â´Ù.

±³À° ÈÄ Á¦½ÃÇÑ 3-4°³ÀÇ ¿¹Á¦¿¡ ´ëÇØ ±³À°¼ö°­ÀÚ°¡ ?TestCase¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

  • ¾Èµå·ÎÀÌµå ±âº»¿ë¾î¿¡ ´ëÇÑ ÀÌÇØ
  • ¾Èµå·ÎÀ̵å JUnit µ¿ÀÛ ¿ø¸®
  • »ç·Êº° ?TestCaseÀÛ¼º (UI, Service, Provider, Logic, Network, ...)
  • Mock¿¡ ´ëÇÑ ÀÌÇØ
  • MockÀ» ÀÌ¿ëÇÑ ?TestCaseÀÛ¼º
  • ...

public class XxxxTest extends ActivityUnitTestCase<TargetClassName>{ 
    public XxxxTest() { 
        super(TargetClassName.class); 
    } 
 
    private Intent mStartIntent; 
 
    protected void setUp() throws Exception {        
        super.setUp(); 
        mStartIntent = new Intent(Intent.ACTION_MAIN); 
        startActivity(mStartIntent, null, null); 
        assertNotNull(getActivity()); 
    } 
      
    public void testYyyy(){ 
    } 
 
    protected void tearDown() throws Exception{ 
        super.tearDown(); 
    } 
} 
 

°ü·Ã ¼­Àû

°ü·Ã »çÀÌÆ®


PythonPowered EditText of this page (last modified 2011-07-26 17:30:09)
FindPage by browsing, searching, or an index
Or try one of these actions: DeletePage, DeleteUploadedFile, LikePages, SpellCheck, UploadFile