草庐IT

RoboLectric

全部标签

android - 集成 Robolectric 和 Cucumber

我想结合使用Robolectric和Cucumber(JVM)。目前我有两个类ActivityStepdefs,其中定义了Activity管理的两个步骤定义。我的第二个类是RoActivity,例如,一个Activity是根据它的类名创建的,并且将在其中使用Robolectric。当我使用RobolectricTestRunner运行RoActivityTest时,此类中的测试通过了,但是当我运行RunCukesTest(用于将功能作为junit测试运行的类)来自RoActivity的代码未作为Robolectric的一部分运行,即RunCukesTest在我的项目中搜索功能并将其与A

java - Robolectric:在我的案例中运行处理程序的循环程序

我有一个非常简单的类,它有一个Handler,当它处理消息时它会再次发送新消息:publicclassMyRepeatTask{…publicvoidstartTask(){//sendmessagewithdelay5sechandler.sendMessageDelayed(handler.obtainMessage(…),5000);}Handlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){//IputalogforunittestSystem.out.println(“handlingme

android - Robolectric + OkHttp + 改造 + rxJava 单元测试

我正在尝试使用robolectric为一段代码编写单元测试。问题是我需要伪造http调用,但根据这个答案,robolectric的伪造层似乎只适用于Apache的HttpClient:Linktoanswer在Retrofit中,您无法更改URL,因此MockWebServer似乎不是一个选项。似乎mockito可以捕获retrofit回调,但我使用的是rxJava,所以我真的不知道它是否有帮助。有人对使用Robolectric+Retrofit+okHttp+rxJava进行单元测试有什么建议吗?这是一小段代码:@Testpublicvoidtest1()throwsIOExcept

android - 一些 Robolectric 测试在一起运行时失败但单独通过

我使用的是AndroidStudio1.2,Robolectric3.0-rc2。我有两个测试类,一个叫MotdTest使用一种测试POJOjson序列化和反序列化的测试方法。另一个叫UserInfoTest,其中包含4个测试方法,用于测试我设置到SharedPreferences中的用户信息.如果我运行UserInfoTest单独地,所有4种测试方法总是通过。但是,如果我运行所有测试,则测试在MotdTest中成功,但是UserInfoTest的两种方法总是失败。我现在通过调用./gradlewtest从命令行运行有谁知道为什么当我运行所有测试时我的一些测试失败了?在我的UserIn

android - 使用 Robolectric 和 Mockito 测试 CursorLoader

鉴于我正在开发一个简单的ListFragment(在本例中,它从MediaStore读取艺术家列表,但稍后也会从不同的来源读取数据),如下所示:@EFragmentpublicclassArtistsFragmentextendsListFragmentimplementsLoaderManager.LoaderCallbacks{privatestaticfinalStringTAG=ArtistsFragment.class.getName();privateSimpleCursorAdaptermAdapter;Uriuri=MediaStore.Audio.Artists.EX

android - 使用 Robolectric : Width and height are always 0 测试自定义 View

我已经为绘图应用构建了一个自定义View(DrawView)。它在很大程度上取决于内部位图的实际宽度和高度。当我尝试使用Robolectric2.2对其进行测试时,View的长度和宽度均为0,这使我的内部逻辑崩溃。我怎样才能模拟真实的屏幕尺寸?我使用一个简单的LinearLayout和DrawView作为其中唯一要测试的元素。这是我的布局:这是我的单元测试:@RunWith(RobolectricTestRunner.class)publicclassDrawViewTest{Activityactivity;DrawViewdrawView;LinearLayoutlayout;@B

android - 运行 Robolectric 测试时的 Resources$NotFoundException

我刚刚使用新应用设置了Roboelectric3.2.2,并且编写了我的第一个简单测试:@RunWith(RobolectricTestRunner.class)@Config(manifest="src/main/AndroidManifest.xml",packageName="my.pacakge.name.debug")publicclassMainActivityTest{@TestpublicvoidclickButton(){MainActivitymainActivity=Robolectric.setupActivity(MainActivity.class);Str

android - 在使用 Robolectric 测试 Activity 时模拟 SQLite 数据库

在过去的几天里,我开始研究roboguice、robolectric和mockito。我有一个带有登录屏幕的小型Android应用程序,其中包含用于更快输入用户名的AutoCompleteTextView。AutoCompleteTextView的用户名存储在sqlite数据库中。publicclassMainActivityextendsRoboActivityimplementsView.OnClickListener{@InjectView(R.id.startScreen_Login_Button)privateButtonloginButton;@InjectView(R.i

android - 使用 Dagger2 (Robolectric) 模拟 jetpack ViewModel 进行单元测试

所以我正在尝试使用Robolectric为我的Activity编写单元测试,但是我不知道如何提供模拟View模型,因为我的虚拟机是如何在类中直接实例化的。这是因为Jetpack的生命周期感知ViewModel需要一个Provider类来实例化。所以,我实际上是在注入(inject)自定义提供程序,然后使用它来创建我的ViewModel。我看过其他示例,但它们看起来都非常令人困惑。我如何实现这一点?classActivityEpisodeList:AppCompatActivity(){@InjectlateinitvarvmFactory:ViewModelProvider.Facto

android - 测试 Activity 是否已使用 FLAG_ACTIVITY_CLEAR_TOP 启动

Robolectric允许使用shadowOf(activity).peekNextStartedActivity()测试Activity是否已启动。但是,如果Activity以FLAG_ACTIVITY_CLEAR_TOP启动,则此方法似乎不起作用。这是直观的,因为此标志的目的不是启动新的Activity,而是将后台堆栈中的现有Activity移到前台。有什么方法可以测试这种情况吗?更新我的测试场景如下:涉及3个Activity,我们称它们为A,B和C。被测Activity是B,它是由A启动的。B现在启动C获取结果,当收到结果时使用FLAG_ACTIVITY_CLEAR_TOP标志。