[android] 안드로이드 Room Database의 데이터베이스 테스트 방법
Room 데이터베이스를 테스트하는 데는 몇 가지 중요한 요소가 있습니다. 이전에 작성한 코드를 변경하지 않고 데이터베이스를 테스트하는 방법, 데이터베이스의 테스트용 인스턴스를 만드는 방법 등이 그 중 일부입니다.
데이터베이스 테스트를 위한 설정
Room 데이터베이스를 테스트하기 위해서는 androidx.room:room-testing
라이브러리를 사용해야 합니다. 이 라이브러리에는 Room 데이터베이스를 테스트하고 모의(mock) 객체를 생성하는 데 필요한 클래스와 메서드가 포함되어 있습니다.
먼저, build.gradle
파일에서 테스트 의존성을 추가해야 합니다.
androidTestImplementation "androidx.room:room-testing:$roomVersion"
여기서 $roomVersion
은 사용 중인 Room 라이브러리의 버전입니다.
데이터베이스 테스트 작성하기
Room 데이터베이스를 테스트하기 위해서는 @RunWith(AndroidJUnit4::class)
어노테이션을 사용한 JUnit 테스트 클래스를 작성해야 합니다. 또한, 테스트에서는 Room.inMemoryDatabaseBuilder()
를 사용하여 인메모리 데이터베이스를 만들고, 테스트용 데이터를 채워넣어야 합니다.
아래는 Room 데이터베이스의 DAO(Data Access Object)를 테스트하는 예제 코드입니다.
@RunWith(AndroidJUnit4::class)
class MyDatabaseTest {
private lateinit var myDatabase: MyDatabase
private lateinit var myDao: MyDao
@Before
fun setup() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
myDatabase = Room.inMemoryDatabaseBuilder(context, MyDatabase::class.java).build()
myDao = myDatabase.myDao()
}
@After
fun closeDatabase() {
myDatabase.close()
}
@Test
fun testDataInsertionAndRetrieval() {
val myData = MyData(1, "Example")
myDao.insert(myData)
val retrievedData = myDao.getById(1)
assertEquals(myData, retrievedData)
}
}
이러한 방식으로 Room 데이터베이스를 테스트할 수 있습니다. 이 테스트 코드를 실행하면 실제 데이터베이스를 사용하지 않고도 데이터베이스 작업을 테스트할 수 있습니다.
참고 문헌: Android Developers - Test Room