【问题标题】:How to test Android sqlite with junit?如何用junit测试Android sqlite?
【发布时间】:2013-12-11 16:18:42
【问题描述】:

我创建了一个简单的 Android 应用程序(类似于 HelloWorld),现在我将添加操作以使用 mockdao 保存示例数据(只是一个用于管理数据的列表)。将来,我会将数据保存在 sqlite db 中。

在 Android 项目中,我创建了一个简单的对象结构(一个任务)和 TaskService 来管理任务列表。

现在我想创建一个 junit 测试。我读到最好创建一个新项目(Android 测试项目)。 我尝试创建一个简单的 android 测试项目并将我的项目添加到该测试项目中。我基于 mockdao 创建了第一个 junit 测试,但是当我运行项目时,我收到了这个错误:

java.lang.ClassNotFoundException: my.package.TaskServiceTest

在我的android测试项目中,junit test在src/my.package.TaskServiceTest中

在 Eclipse 项目属性中,两者的输出文件夹都是 bin/classes。

我的 Android 项目是 maven 项目,但不是 android 测试项目。

你能帮我吗?

谢谢

【问题讨论】:

    标签: java android eclipse sqlite junit


    【解决方案1】:

    你应该看看 robolectric : http://robolectric.org/

    这将允许您从 junit 的角度测试 sqllite 操作。 Robolectric 在你的开发机器上“模拟”你最喜欢的 jvm 的 android 环境。

    通常,测试如下所示:

    @RunWith(GuiceRobolectricJUnitRunner.class)
    public class PhotoDatabaseTest {
    
        @Inject
        private Context context;
    
        @Inject
        private SharedPreferences sharedPreferences;
    
        @Test
        public void dataInsertBaseTest() throws SQLException {
            PhotosUploadDataSource photosUploadDataSource = new PhotosUploadDataSource(context);
            photosUploadDataSource.deleteAll();
    
            MediaItem mediaItem = new MediaItem();
            mediaItem.setLocation("/test/");
            mediaItem.setName("photo.jpg");
            mediaItem.setSize(5496849);
            mediaItem.setStatus(MediaItem.STATUS_PENDING);
            mediaItem.setType("images/jpg");
            MediaItem resultItem = photosUploadDataSource.createMediaItem(mediaItem);
            assertNotNull(resultItem);
            Utils.displayObject(resultItem);
        }
      } 
    

    GuiceRobolectricJUnitRunner 是典型的测试运行器 junit 东西(这里有 guice,但没有它你也可以做到)。有趣的事情之一是您可以模拟各种有趣的行为,因为您的数据库不会在测试之间持续存在(或者您可以通过在 @beforeTest 中实现预填充)。更多在这里: http://robolectric.org/customizing.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      相关资源
      最近更新 更多