좋은 프로그램은 마음의 여유에서 나온다.

robolectric를 이용한 sqlite 단위테스트 본문

프로그래밍/안드로이드

robolectric를 이용한 sqlite 단위테스트

좋은데이 2013. 5. 16. 12:39

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
Comments