Bạn cầ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 khi tạo cơ sở dữ liệu bằng thư viện dữ liệu cố định Room. Trang này thảo luận về cách kiểm thử cơ sở dữ liệu của bạn 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ó 2 cách để kiểm thử cơ sở dữ liệu của bạn:
- Trên thiết bị Android.
- Trên máy phát triển của máy chủ lưu trữ (không khuyến nghị).
Để 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ị Android
Phương pháp tiếp cận được khuyến nghị để kiểm thử việc triển khai cơ sở dữ liệu là ghi kiểm thử JUnit chạy trên thiết bị Android. Vì các kiểm thử này không yêu cầu tạo hoạt động nên sẽ có tốc độ thực thi nhanh hơn so với 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:
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)) } }
Java
@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)); } }
Kiểm thử trên máy chủ của bạn
Room sử dụng Thư viện hỗ trợ SQLite,. Thư viện này cung cấp giao diện phù hợp với giao diện trong các lớp Khung Android. Dịch vụ hỗ trợ này cho phép bạn truyền các phương thức triển khai tuỳ chỉnh của thư viện hỗ trợ để kiểm thử các truy vấn cơ sở dữ liệu.
Kiểm thử hoạt động di chuyển
Room hỗ trợ hoạt động di chuyển cơ sở dữ liệu dần dần để 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ố. Bạn cầ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.
Sử dụng Trình kiểm tra cơ sở dữ liệu
Ở Android Studio 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 đang 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 (gutter) để nhanh chóng chạy truy vấn từ các lớp DAO.
- Xem ngay thông tin cập nhật trực tiếp trong Trình kiểm tra cơ sở dữ liệu khi ứng dụng đang chạy của bạn thay đổi dữ liệu.
Để tìm hiểu thêm về Trình kiểm tra cơ sở dữ liệu, 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 từ 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, 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)