美文网首页
(五)测试数据库

(五)测试数据库

作者: 鹿小纯0831 | 来源:发表于2018-10-31 09:15 被阅读21次

    在使用Room持久性库创建数据库时,验证应用程序数据库和用户数据的稳定性非常重要。
    有两种方法可以测试您的数据库:

    • 在Android设备上。
    • 在您的主机开发机器上(不推荐)。

    有关特定于数据库迁移的测试的信息,请参阅测试迁移。

    注意:在为您的应用程序运行测试时,Room允许您创建DAO类的模拟实例。 这样,如果您没有测试数据库本身,则无需创建完整数据库。 此功能是可行的,因为您的DAO不会泄漏数据库的任何详细信息。

    一、在Android设备上测试

    测试数据库实现的推荐方法是编写在Android设备上运行的JUnit测试。 因为这些测试不需要创建活动,所以它们的执行速度应该比UI测试快。

    在设置测试时,您应该创建数据库的内存版本,以使测试更加密集,如以下示例所示:

    @RunWith(AndroidJUnit4.class)
    public class SimpleEntityReadWriteTest {
        private UserDao mUserDao;
        private TestDatabase mDb;
    
        @Before
        public void createDb() {
            Context context = ApplicationProvider.getApplicationContext();
            mDb = Room.inMemoryDatabaseBuilder(context, TestDatabase.class).build();
            mUserDao = mDb.getUserDao();
        }
    
        @After
        public void closeDb() throws IOException {
            mDb.close();
        }
    
        @Test
        public void writeUserAndReadInList() throws Exception {
            User user = TestUtil.createUser(3);
            user.setName("george");
            mUserDao.insert(user);
            List<User> byName = mUserDao.findUsersByName("george");
            assertThat(byName.get(0), equalTo(user));
        }
    }
    

    二、在主机上测试

    Room使用SQLite支持库,它提供与Android Framework类中的接口匹配的接口。 此支持允许您传递支持库的自定义实现以测试数据库查询。

    注意:即使此设置允许您的测试快速运行,也不建议这样做,因为您设备上运行的SQLite版本和用户设备可能与主机上的版本不匹配。

    相关文章

      网友评论

          本文标题:(五)测试数据库

          本文链接:https://www.haomeiwen.com/subject/uyyotqtx.html