2011-11-20 2 views
3

quelqu'un pourrait m'aider avec le problème: comment tester les applications Android qui utilise ormlite?comment tester android avec le projet ormlite

Je voudrais savoir comment créer des faux-semblants dao. Ce code me fait un dao

public Dao<Account, Integer> getAccountDao() throws SQLException { 
    if (accountDao == null) { 
     accountDao = getDao(Account.class); 
    } 
    return accountDao; 
} 

Mon activité de test ressemble à ceci:

public class OrmActivity extends OrmLiteBaseActivity<DatabaseHelper> { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     initUi(); 
     initUiListeners(); 

     RuntimeExceptionDao<Account, Integer> accountDao = getHelper().getAccountDataDao(); 
     Account account = new Account(); 
     account.setName("name"); 
     account.setPassword("password"); 
     accountDao.create(account); 
    } 

Je ne veux pas créer la base de données séparée pour les tests. Instend de cela, je veux utiliser des simulacres.

Meilleures salutations

Répondre

3

J'utilise Robolectric pour les tests unitaires applications Android. Fonctionne bien avec RoboGuice et Ormlite. Robolectric crée sa propre base de données, de sorte qu'un test unitaire ne modifie pas la base de données sur l'appareil avec lequel vous testez.

Si cela ne répond pas à votre question, veuillez clarifier votre question. Comme, comment ne pas utiliser une base de données distincte liée à l'utilisation de Dock Mock?

+0

thx pour la réponse, je vais vérifier – reizals

+0

@christine - avez-vous un exemple de code de roboelectric et ormlite travailler ensemble – rOrlig

+0

Je mets en place un exemple de code ici: www.christine.nl – Christine

3

Juste au cas où quelqu'un d'autre trébucherait à travers ce post. Le problème que j'avais était que vous avez besoin d'une instance d'une activité afin que vous puissiez passer le contexte à la méthode OpenHelperManager.getHelper (android.content.Context context, Class openHelperClass). Pour contourner ce problème, je crée une classe de test ActivityInstrumentationTestCase2 pour fournir le contexte. Vous pouvez utiliser MockContext mais je comprends que ce soit problématique. De cette façon est simple stupide, sorte de :)

À ce stade, je ne dérange pas de tester l'une des fonctionnalités de l'activité, seulement la fonctionnalité de base de données.

public class TestActivity extends ActivityInstrumentationTestCase2<MainFragment> { 

    public TestActivity() { 
     super(MainFragment.class); 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     //DatabaseHelper.class is the extended OrmLiteSqliteOpenHelper class 
     OpenHelperManager.getHelper(getActivity(), DatabaseHelper.class); 
    } 

    protected void tearDown() throws Exception { 
     OpenHelperManager.releaseHelper(); 
     super.tearDown(); 
    } 

    public void testDetailDiscount() { 
    //Example code using an entity class that encapsulates ormlite functionality 
     double total = 95 * 5; 
     DocumentDetail detail = DocumentDetail.create(getActivity()); 
     assertEquals(total, detail.getTotal()); 
    } 
} 

Hope it helps