좋은 프로그램은 마음의 여유에서 나온다.
robolectric를 이용한 sqlite 단위테스트 본문
robolectric를 이용해 sqlite를생성하면 메모리기반으로 디비가 생성된다.
기존에 있던 sqlite 파일을 연동하기
DatabaseConfig.DatabaseMap를 implements한 클래스 생성 아래 내용 구현 (https://www.assembla.com/code/hserpien/subversion/nodes/18/trunk/AndroidSQLiteExample/test/SQLiteMap.java)
private String _dbFile = "path";
public String getDriverClassName() {
// throw new RuntimeException("SQLITE!");
return "org.sqlite.JDBC";
}
public String getConnectionString() {
// throw new RuntimeException("SQLITE!");
if(_dbFile == null) {
return "jdbc:sqlite::memory:";
} else {
return String.format("jdbc:sqlite:%s", _dbFile);
}
}
public String getScrubSQL(String sql) {
// throw new RuntimeException("SQLITE!");
return sql;
}
public String getSelectLastInsertIdentity() {
return "SELECT last_insert_rowid() AS id";
}
public int getResultSetType() {
return ResultSet.TYPE_FORWARD_ONLY;
}
SQLiteMap를 설정하는 부분에서 구글에서 검색한 자료는 TestRunner을 상속해서 생성자에 넣어주는 방식이 나오나 robolectric 2.0알파 버전에는 RobolectricConfig가 없음..(참고 : https://www.assembla.com/code/hserpien/subversion/nodes/18/trunk/AndroidSQLiteExample/test/SQLiteTestRunner.java)
RobolectricTestRunner코드에서 방법을 찾음(https://github.com/xtremelabs/robolectric/pull/3/files)
DatabaseConfig.setDatabaseMap(new 위에 생성한 클래스));
이렇게 하면 됨
'프로그래밍 > 안드로이드' 카테고리의 다른 글
구글 플레이 서비스 샘플 (0) | 2013.05.21 |
---|---|
안드로이드 새로운 api (0) | 2013.05.20 |
안드로이드 몽키 테스트 (0) | 2013.05.07 |
안드로이드 TDD (0) | 2013.04.26 |
NDK에서 C++ STL 사용하기 (1) | 2013.01.29 |