Vin*_*rat 7 android unit-testing android-contentprovider
我编写了我的内容提供程序,应该在SqlLite数据库中包装对2个表的访问.现在我想为它编写一些测试用例,但我从来没有这样做过.阅读开发者指南中的部分后,我必须说我没有得到任何测试.
以下是我的代码.这是测试项目中唯一与我的主项目相对应的类.当我在Eclipse中执行它时,模拟器正确启动,软件包已安装,但它没有运行测试:
测试运行失败:测试运行不完整.预计1次测试,收到0
这是测试类:
public class ArticleProviderTest extends ProviderTestCase2<ArticleProvider> {
static final Uri[] validUris = new Uri[] { Articles.CONTENT_URI,
Pictures.CONTENT_URI,
Pictures.getContentUriForArticleId(1) };
public ArticleProviderTest(Class<ArticleProvider> providerClass, String providerAuthority) {
super(providerClass, providerAuthority);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
public void testQuery() {
ContentProvider provider = getProvider();
for (Uri uri : validUris) {
Cursor cursor = provider.query(uri, null, null, null, null);
assertNotNull(cursor);
}
}
}
Run Code Online (Sandbox Code Playgroud)
清单文件,如果它有帮助:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.marvinlabs.xxxx"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<instrumentation android:targetPackage="fr.marvinlabs.xxxx" android:name="android.test.InstrumentationTestRunner" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="android.test.runner" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
当我在调试配置中启动时,构造函数和setUp中的断点不会被触发.?!
我也没有在网上找到太多信息.有人可以帮我理解应该如何设置测试(基本上创建一个测试数据库文件,填充一些数据,查询它,......)?
好的,我知道了.错误是我没有为测试类提供默认构造函数.我覆盖了错误的构造函数:
public ArticleProviderTest(Class<ArticleProvider> providerClass, String providerAuthority) {
super(providerClass, providerAuthority);
}
Run Code Online (Sandbox Code Playgroud)
就是现在
public ArticleProviderTest() {
super(ArticleProvider.class, "com.blah.azerty");
}
Run Code Online (Sandbox Code Playgroud)
凌晨2点是你无法完全阅读文档的时间,下午更好:)