Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

데이터베이스 테스트 및 디버깅

Room 지속성 라이브러리를 사용하여 데이터베이스를 생성할 때 앱의 데이터베이스 및 사용자 데이터의 안정성을 확인하는 것이 중요합니다. 이 페이지에서는 데이터베이스를 테스트하고 테스트를 통과하는 데 도움이 되는 디버깅 단계를 실행하는 방법을 설명합니다.

데이터베이스 테스트

다음과 같이 데이터베이스를 테스트하는 두 가지 방법이 있습니다.

  • Android 기기에서 테스트
  • 호스트 개발 머신에서 테스트(권장되지 않음)

데이터베이스 이전과 관련된 테스트에 관한 자세한 내용은 이전 테스트를 참조하세요.

Android 기기에서 테스트

데이터베이스 구현을 테스트하는 데 권장되는 접근 방식은 Android 기기에서 실행되는 JUnit 테스트를 작성하는 것입니다. 이러한 테스트에서는 활동을 만들 필요가 없으므로 UI 테스트보다 실행 속도가 더 빠릅니다.

테스트를 설정할 때 다음 예와 같이 메모리 내 데이터베이스 버전을 생성하여 테스트의 폐쇄성을 더 강화해야 합니다.

Kotlin

@RunWith(AndroidJUnit4::class)
class SimpleEntityReadWriteTest {
    private lateinit var userDao: UserDao
    private lateinit var db: TestDatabase

    @Before
    fun createDb() {
        val context = ApplicationProvider.getApplicationContext<Context>()
        db = Room.inMemoryDatabaseBuilder(
                context, TestDatabase::class.java).build()
        userDao = db.getUserDao()
    }

    @After
    @Throws(IOException::class)
    fun closeDb() {
        db.close()
    }

    @Test
    @Throws(Exception::class)
    fun writeUserAndReadInList() {
        val user: User = TestUtil.createUser(3).apply {
            setName("george")
        }
        userDao.insert(user)
        val byName = userDao.findUsersByName("george")
        assertThat(byName.get(0), equalTo(user))
    }
}

자바

@RunWith(AndroidJUnit4.class)
public class SimpleEntityReadWriteTest {
    private UserDao userDao;
    private TestDatabase db;

    @Before
    public void createDb() {
        Context context = ApplicationProvider.getApplicationContext();
        db = Room.inMemoryDatabaseBuilder(context, TestDatabase.class).build();
        userDao = db.getUserDao();
    }

    @After
    public void closeDb() throws IOException {
        db.close();
    }

    @Test
    public void writeUserAndReadInList() throws Exception {
        User user = TestUtil.createUser(3);
        user.setName("george");
        userDao.insert(user);
        List<User> byName = userDao.findUsersByName("george");
        assertThat(byName.get(0), equalTo(user));
    }
}

호스트 머신에서 테스트

Room은 Android 프레임워크 클래스의 인터페이스와 일치하는 인터페이스를 제공하는 SQLite 지원 라이브러리를 사용합니다. 이 지원을 통해 지원 라이브러리의 맞춤 구현을 전달하여 데이터베이스 쿼리를 테스트할 수 있습니다.

데이터베이스 디버그

Android SDK에는 앱의 데이터베이스를 검사하기 위한 sqlite3 데이터베이스 도구가 포함되어 있습니다. 이 도구에는 테이블의 콘텐츠를 출력하는 .dump 및 기존 테이블의 SQL CREATE 문을 출력하는 .schema와 같은 명령어가 포함되어 있습니다.

또한 다음 스니펫과 같이 명령줄에서 SQLite 명령어를 실행할 수도 있습니다.

adb -s emulator-5554 shell
sqlite3 /data/data/your-app-package/databases/rssitems.db

자세한 내용은 SQLite 웹사이트에서 제공되는 sqlite3 명령줄 문서를 참조하세요.