2013-03-09 115 views
4

在我的應用程序中,我使用帳戶經理的方法來獲取所有者電子郵件。我如何用Robolectric測試這種方法?我應該爲此使用嘲笑嗎?如果我是對的,我可以使用Mockito嗎?有什麼教程可以做到嗎?Android。 Robolectric。測試AccountManager結果

回答

0

首先我實現的單元測試

// Imports are skipped 
/** 
* Created by fminatchy on 25/02/14. 
*/ 
@RunWith(RobolectricTestRunner.class) 
@Config(manifest = "/src/main/AndroidManifest.xml") 
public class TestAuthorization { 

    AccountManager accountManager; 

    Account account0; 
    Account account1; 
    Account account2; 

    @Before 
    public void init() { 
     creationComptes(); 
     accountManager = AccountManager.get(Robolectric.application); 
     shadowOf(accountManager).addAccount(account0); 
     shadowOf(accountManager).addAccount(account1); 
     shadowOf(accountManager).addAccount(account2); 
    } 

    @Test 
    public void test_comptes() { 
     final AlbumsActivity activity = Robolectric.buildActivity(AlbumsActivity.class).create().get(); 

     final String[] accountsName = activity.getGoogleAccounts(); 
     assertThat(Arrays.asList(accountsName)).containsExactly("compte n°1", "compte n°3"); 


    } 

    private void creationComptes() { 
     account0 = new Account("compte n°1", GoogleAccountManager.ACCOUNT_TYPE); 
     account1 = new Account("compte n°2", "pas google"); 
     account2 = new Account("compte n°3", GoogleAccountManager.ACCOUNT_TYPE); 
    } 

和它們是位於活動的代碼:

public String[] getGoogleAccounts() { 
     final AccountManager accountManager = AccountManager.get(this.getApplicationContext()); 
     Account[] accounts = accountManager.getAccountsByType(GoogleAccountManager.ACCOUNT_TYPE); 
     String[] names = new String[accounts.length]; 
     for (int i = 0; i < names.length; i++) { 
      names[i] = accounts[i].name; 
     } 
     return names; 
    }