Java 如何使用junit测试Android sqlite?
我创建了一个简单的Android应用程序(类似HelloWorld),它是一个dnow,我将添加操作来使用mockdao保存样本数据(只是一个管理数据的列表)。将来,我将在sqlite数据库中持久化数据 在Android项目中,我创建了一个简单的对象结构(任务)和TaskService来管理任务列表 现在我想创建一个junit测试。我读到最好创建一个新项目(Android测试项目)。 我试图创建一个简单的android测试项目,并将我的项目添加到此测试项目中。我基于mockdao创建了第一个junit测试,但在运行项目时收到以下错误: java.lang.ClassNotFoundException:my.package.TaskServiceTest 在我的android测试项目中,junit测试位于src/my.package.TaskServiceTest中 在eclipse项目属性中,输出文件夹为bin/classes 我的Android项目是一个maven项目,但不是Android测试项目 你能帮我吗Java 如何使用junit测试Android sqlite?,java,android,eclipse,sqlite,junit,Java,Android,Eclipse,Sqlite,Junit,我创建了一个简单的Android应用程序(类似HelloWorld),它是一个dnow,我将添加操作来使用mockdao保存样本数据(只是一个管理数据的列表)。将来,我将在sqlite数据库中持久化数据 在Android项目中,我创建了一个简单的对象结构(任务)和TaskService来管理任务列表 现在我想创建一个junit测试。我读到最好创建一个新项目(Android测试项目)。 我试图创建一个简单的android测试项目,并将我的项目添加到此测试项目中。我基于mockdao创建了第一个ju
谢谢您应该看看robolectric: 这将允许您从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);
}
}
guicerobelectricjunitrunner是您典型的测试运行程序junit(这里有guice,但您可以不用它)。有趣的一点是,您可以模拟各种有趣的行为,因为您的数据库在测试之间不会持久存在(或者您可以通过在@beforeTest中实现预填充)。详情如下: