草庐IT

Robolectric-Tests

全部标签

android - Robolectric:运行多个测试失败

我正在尝试使用SQLite(OpenHelper)作为数据库,使用Robolectric3.0+Gradle运行多个测试。运行每个单独的测试工作正常,但启动整个测试套件总是会在第二个测试中导致RuntimeException。这是我的测试假人,它不起作用。@RunWith(RobolectricGradleTestRunner.class)@Config(constants=BuildConfig.class,sdk=21)publicclassDummy{@BeforepublicvoidsetUp()throwsException{//setupactivity...}@Testp

android - 多模块 Android 项目中的全局代码覆盖率 : merge code coverage reports (Unit & UI tests)

我有一个由2个模块组成的Android应用:应用-用户界面子模块-具有大部分业务逻辑对于它们中的每一个,我都有一个gradle任务来验证代码覆盖率:应用:UI代码覆盖率(Espresso)子模块:单元测试代码覆盖率作为客户的要求,我需要合并这两个报告以获得应用程序的整体/全局代码覆盖率。注意:我使用的是Gradle版本3.1.2。应用程序Gradle文件:applyplugin:'jacoco'android{testBuildType"uiTest"...buildTypes{debug{applicationIdSuffix".debug"versionNameSuffix"-de

android - Robolectric 3.0,未能测试启动 HandlerThread 的函数

我有一个简单的类Job扩展了HandlerThread:publicclassJobextendsHandlerThread{publicJob(Stringname){super(name);}...}然后,我有一个JobUtils类,它具有获取Job&start()的功能:publicJobUtils{publicJobUtils(){}//IunittestthisfunctioninmytestclassbelowpublicJobgetAndStartJob(Stringname){Jobjob=newJob(name);job.start();}}我使用Robolectri

Android Gradle 应用程序 :connectedCheck runs tests from dependencies

我有一些图书馆项目有自己的测试。我不负责这个库项目,也不关心它的测试,但是,当我运行gradle:app:connectedCheck时,它会运行我的测试,但它也会运行依赖项的测试。有什么办法可以防止这种情况发生吗?我应该提一下,我的依赖项不在我所说的app模块中。编辑:更具体地说,我所依赖的库项目有非常长的测试,因为它们打算在凌晨2点在构建服务器上运行,所以我坐在这里等待油漆干燥只是为了运行我的测试很短。EDIT2:我也尝试过使用Spoon。我现在已经设置好并且可以运行单独的类,但我想在一个包中运行所有内容。这可能吗?EDIT3:文件夹结构无关紧要,但这里有一个非常非常不详细的外观:

android - Robolectric 和 IntentServices

如何使用Robolectric来测试将Intent广播为响应的IntentService?假设有以下类:classMyServiceextendsIntentService{@OverrideprotectedvoidonHandleIntent(Intentintent){LocalBroadcastManager.getInstance(this).sendBroadcast(newIntent("action"));}}在我的测试用例中,我试图做这样的事情:@RunWith(RobolectricTestRunner.class)publicclassMyServiceTest{

android - Robolectric ContentProvider 测试

我注意到时不时会有关于使用Robolectric测试自定义ContentProvider的问题。然而,对于如何正确地做到这一点,从来没有一个具体而明确的答案。我偶然发现了两种不同的方法:有人说您可以简单地实例化内存中的ContentProvider,您可以使用它来插入和查询数据(https://gist.github.com/anonymous/6139359)另一种说法是使用ShadowContentResolver设置模拟光标数据(https://groups.google.com/d/msg/robolectric/r35mMirIkTs/xJJBNXl_RgwJ)但是,我在这两

android - Robolectric 不支持 API 级别 28

虽然这个问题已经在其他线程的以前版本中得到了回答,但现在所有的答案似乎都不适用于我的api28,所以..所有Robolectric测试在api27上运行良好。现在,当我的应用程序api目标为28时,它们都失败了。我有@Config(constants=BuildConfig::class,sdk=[Build.VERSION_CODES.P])在我的测试课上。深入研究Robolectrics内部SdkConfig.java,看起来他们添加了对api28的支持:addSdk(Build.VERSION_CODES.P,"P","4651975","P");但是在调试器中评估该行代码时,B

android - 我如何知道我的应用程序是否使用 Robolectric 运行?

我有一个使用ORMLite/SQLite的Android应用程序,我将Robolectric与JUnit4结合使用,以允许我在AndroidStudio和Jenkins构建服务器上运行单元测试。通常我会在我的测试中设置测试数据,在设置中,然后针对它运行我的测试场景,但是当我尝试这样做时,我开始遇到似乎与文件被锁定或其他相关的问题和异常这似乎是其他人遇到的问题......所以我到目前为止所做的是使用我的数据库助手中的创建数据库方法来创建一些测试期望存在的虚拟数据。问题是我的应用程序现在需要插入一个真实的数据库,而我不能让它在运行时设置虚拟数据。在我的数据库助手类中,是否有办法检测代码是在

android - 将 Robolectric 与 Gradle 结合使用时的 Resources$NotFoundException

我一直在关注thistutorial关于设置Robolectric以测试我的AndroidGradle项目。我一直遇到这个错误:android.content.res.Resources$NotFoundException:nosuchlabelcom.mypackage.dev:string/app_name通过从教程下载示例项目,我确定问题出在我的productFlavors(开发、暂存、生产)。将风格添加到工作示例项目会导致同样的问题。你可以看到我的大纲build.gradleinthisanswer.我看到了各种答案(例如here),这表明我需要为每种风格指定sourceSet

android - 让 Robolectric 与 Volley 一起工作

我正在尝试让Volley与Robolectric合作。我可以看到我的HTTP请求被调用,并且parseNetworkResponse被调用(我正在发送JsonRequest的自定义子类),但我的监听器没有被调用。有什么建议吗?这是一个代码示例:@TestpublicvoidtestTypeAheadClient()throwsException{Robolectric.getFakeHttpLayer().interceptHttpRequests(false);//mRemoteRequestQueueandmCustomRequestaresetuppreviouslymRemot