如何使用JUnit测试Android的源码? [英] How to test Android sqlite with junit?
问题描述
我创建了一个简单的Android应用程序(的HelloWorld等)的dnow我想补充的操作保存样本数据与mockdao(只是一个列表来管理数据)。今后,我会sqlite的分贝留存数据。
I created a simple Android app (HelloWorld like) an dnow I would add operation to save sample data with mockdao (just a List to manage data). In future, I would persist data in sqlite db.
在Android项目我创建了一个简单的对象结构(任务),并TaskService管理任务的列表。
In Android project I created a simple object structure (a Task) and TaskService to manage list of task.
现在我想创建一个JUnit测试。我读的是更好地创建一个新的项目(Android的测试项目)。
我试图创建一个简单的Android测试项目,并增加我的项目这个测试项目。我创建了一个第一JUnit测试基础上,mockdao但WHN我运行该项目,我收到此错误:
Now I want to create a junit test. I read that's better to create a new project (Android Test Project). I tried to create a simple android test project and adding my project to this test project. I created a first junit test based on the mockdao but whn I run the project I received this error :
抛出java.lang.ClassNotFoundException:my.package.TaskServiceTest
java.lang.ClassNotFoundException: my.package.TaskServiceTest
在我的Android测试项目,JUnit测试在src / my.package.TaskServiceTest
In my android test project, junit test is in src/my.package.TaskServiceTest
在Eclipse项目的属性,输出文件夹是为斌/班。
In eclipse project properties, output folder is bin/classes for both.
我的Android项目是一个Maven项目而不是Android的测试项目。
My Android project is a maven project but not android test project.
你能帮助我吗?
感谢
推荐答案
您应该看一看robolectric:
http://robolectric.org/
You should take a look at robolectric : http://robolectric.org/
这将允许您从一个JUnit的点测试sqllite操作。 Robolectric从开发计算机上您最喜欢的JVM效仿了Android environnment。
This will allow you to test sqllite operation from a junit point of view. Robolectric "emulate" the android environnment from your favorite jvm on your dev machine.
通常情况下,一个测试则是这样的:
Typically, a test then looks like this :
@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的东西(在这里与吉斯,但你可以做到这一点没有它)。一个有趣的事情是,你可以模拟各种有趣的行为,因为你的数据库没有测试之间持续存在(或者你可以通过实现在@beforeTest一个pre人口)。这里更多:
http://robolectric.org/customizing.html
这篇关于如何使用JUnit测试Android的源码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!