2013-06-04 2 views
0

Когда я запускаю свои тесты, все вещи сохраняются в моей базе данных sqlite, поэтому я хочу сделать откат моей базы данных Android после того, как мои тесты Junit будут finsihed, возможно ли это?android testcase junit rollback

protected void setUp() throws Exception { 
     super.setUp(); 
     Log.i(TAG, Utils.getMethodName() + "entry "); 

     sdbApp = (SdbApplication) getContext().getApplicationContext(); 
     mContext = getContext(); 

     mProvider = new SdbContentProvider(); 
     mProvider.attachInfo(mContext, null); 
     mMockContentResolver = new MockContentResolver(); 
     // Create the authority for the URI, by removing the 'content://' and 
     // any 
     // '/' or path part after that. 
     String authority = SpaceDB.CONTENT_URI.toString().substring(10); 
     int pos = authority.indexOf('/'); 
     if (pos > -1) { 
      authority = authority.substring(0, pos); 
     } 
     mMockContentResolver.addProvider(authority, mProvider); 

     authority = FolderDB.CONTENT_URI.toString().substring(10); 
     pos = authority.indexOf('/'); 
     if (pos > -1) { 
      authority = authority.substring(0, pos); 
     } 

     mMockContentResolver.addProvider(authority, mProvider); 

     this.setContext(new IsolatedContext(mMockContentResolver, mContext)); 

     Thread.sleep(5000); 
    } 

не должен ли это IsolatedContext помочь мне с этим?

ответ

0

экспромтом, возьмите копию базы данных в setUp() (использование getDatabasePath() получить File указывающей на вашу базу данных), а затем восстановить его из копии в tearDown().

0

Вы должны выполнить откат, чтобы он происходил после каждого отдельного теста. Таким образом, каждый тест можно считать независимым от других. Попробуйте что-то вроде:

public class DatabaseTests extends AndroidTestCase { 

TestDatabaseHelper mDbHelper; 

@Override 
protected void setUp() throws Exception { 
    super.setUp(); 

    ... Create instance of TestDatbaseHelper under test here.   

    mDbHelper.getWritableDatabase().beginTransaction(); 
} 

@Override 
protected void tearDown() throws Exception { 
    super.tearDown(); 
    mDbHelper.getWritableDatabase().endTransaction();   
} 

<!-- Add your unit tests in here --> 

}