Khi tạo cơ sở dữ liệu bằng thư viện lưu trữ dữ liệu Room, bạn nên xác minh tính ổn định của cơ sở dữ liệu trong ứng dụng và dữ liệu của người dùng. Trang này mô tả cách kiểm thử cơ sở dữ liệu và thực hiện các bước gỡ lỗi để giúp cơ sở dữ liệu vượt qua các đợt kiểm thử.
Kiểm thử cơ sở dữ liệu
Có hai cách để kiểm thử cơ sở dữ liệu của bạn:
- Trên thiết bị chạy Android
- Trên máy phát triển của máy chủ lưu trữ
Để biết thông tin về kiểm thử dành riêng cho hoạt động di chuyển cơ sở dữ liệu, xem bài viết Kiểm thử hoạt động di chuyển.
Kiểm thử trên thiết bị chạy Android
Để kiểm thử việc triển khai cơ sở dữ liệu, bạn nên viết một chương trình kiểm thử JUnit chạy trên thiết bị chạy Android. Vì các kiểm thử này không yêu cầu một hoạt động nên chúng chạy nhanh hơn kiểm thử giao diện người dùng.
Khi thiết lập kiểm thử, bạn nên tạo một phiên bản trong bộ nhớ của cơ sở dữ liệu để các kiểm thử mang tính khép kín hơn, như trong ví dụ sau:
import kotlinx.coroutines.test.runTest @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<TestDatabase>(context) .setDriver(BundledSQLiteDriver()) .build() userDao = db.userDao() } @After fun closeDb() { db.close() } @Test fun writeUserAndReadInList() = runTest { val user = User(3, "george") userDao.insert(user) val byName = userDao.findUsersByName("george") assertEquals(byName.single(), user) } }
Kiểm thử trên máy chủ của bạn (JVM)
Với Room KMP, bạn có thể chạy các kiểm thử cơ sở dữ liệu trên máy phát triển lưu trữ bằng cách sử dụng các kiểm thử JUnit JVM cục bộ. Chế độ thiết lập này giúp các kiểm thử của bạn chạy nhanh hơn bằng cách loại bỏ chi phí của trình mô phỏng hoặc thiết bị Android.
Để duy trì tính nhất quán, hãy sử dụng BundledSQLiteDriver. Trình điều khiển này bao gồm SQLite được biên dịch từ nguồn, sử dụng chính xác cùng một phiên bản SQLite trên máy chủ lưu trữ, thiết bị Android và thiết bị iOS. Việc sử dụng trình điều khiển này sẽ loại bỏ các vấn đề về phiên bản không khớp.
Để thiết lập các kiểm thử JVM, hãy định cấu hình BundledSQLiteDriver trong trình tạo cơ sở dữ liệu kiểm thử:
val db = Room.inMemoryDatabaseBuilder<TestDatabase>() .setDriver(BundledSQLiteDriver()) .build()
Kiểm thử quá trình di chuyển
Room hỗ trợ hoạt động di chuyển cơ sở dữ liệu gia tăng để giữ lại dữ liệu ứng dụng hiện có trong trường hợp bản cập nhật ứng dụng thay đổi giản đồ cơ sở dữ liệu. Tuy nhiên, hoạt động di chuyển được xác định không chính xác có thể khiến ứng dụng của bạn gặp sự cố. Đảm bảo rằng bạn kiểm thử hoạt động di chuyển cơ sở dữ liệu Room.
Gỡ lỗi cơ sở dữ liệu
Bạn có thể sử dụng một số công cụ và quy trình để gỡ lỗi cơ sở dữ liệu của mình.
Dùng Trình kiểm tra cơ sở dữ liệu
Trong Android Studio phiên bản 4.1 trở lên, Trình kiểm tra cơ sở dữ liệu cho phép bạn kiểm tra, truy vấn và sửa đổi cơ sở dữ liệu của ứng dụng trong khi ứng dụng chạy. Trình kiểm tra cơ sở dữ liệu tương thích với phiên bản SQLite đi kèm với Android và bao gồm các tính năng đặc biệt để sử dụng với Room:
- Sử dụng các thao tác định hướng để chạy truy vấn từ các lớp DAO.
- Khi ứng dụng đang chạy của bạn thay đổi dữ liệu, bạn có thể xem ngay thông tin cập nhật trực tiếp trong Trình kiểm tra cơ sở dữ liệu.
Để biết thêm thông tin về Trình kiểm tra cơ sở dữ liệu, hãy xem bài viết Gỡ lỗi cơ sở dữ liệu bằng Trình kiểm tra cơ sở dữ liệu.
Kết xuất dữ liệu qua dòng lệnh
SDK Android có một công cụ cơ sở dữ liệu sqlite3 để kiểm tra cơ sở dữ liệu của ứng dụng. Công cụ này bao gồm các lệnh như .dump để in (print) nội dung của bảng và .schema để in câu lệnh SQL CREATE cho bảng hiện có.
Bạn cũng có thể thực thi các lệnh SQLite từ dòng lệnh, như trong đoạn mã sau:
adb -s emulator-5554 shell sqlite3 /data/data/your-app-package/databases/rssitems.db
Để biết thêm thông tin, hãy xem tài liệu về dòng lệnh sqlite3, có trên trang web SQLite.
Tài nguyên khác
Để tìm hiểu thêm về hoạt động kiểm thử và gỡ lỗi cơ sở dữ liệu Room, xem các tài nguyên bổ sung sau:
Bài đăng trên blog
Video
- Trình kiểm tra cơ sở dữ liệu (11 tuần hoạt động trên Android)