android - Robolectric 测试不调用 textWatcher.onTextChanged

标签 android mockito robolectric rx-java

我有以下 Observable

Observable<OnTextChangeEvent> subjectObservable = WidgetObservable.text(mComposeSubject);

然后呢

subjectObservable.subscribe(s -> onTextChange(mComposeSubject, getString(R.string.blank_warning, mComposeSubject.getHint().toString())));

我还有以下 Robolectric 测试

@Test
public void testOnTextChange_subjectChanged() {
    EmailActivity activity = spy(getActivity());
    activity.mComposeSubject.setText("test");

    assertThat(activity.mSubjectSubscription).isNotNull();
    verify(activity, times(1)).onTextChange(eq(activity.mComposeSubject), anyString());
}

此操作失败并出现 Wanted but not invoked 错误。有没有人知道为什么会这样?据我所知,这使用了一个简单的文本观察器,所以它应该可以正常工作?

最佳答案

对于任何好奇的人,我最终将订阅者移动到另一个类,然后使用 Observable.just("Test") 触发订阅方法并验证它是否被调用。

关于android - Robolectric 测试不调用 textWatcher.onTextChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29758212/

相关文章:

android - 如何从android中的图库上传多张图片?

java - 为什么@Mock 没有 "field is never assigned"警告

java - 为什么我们应该使用 wiremock 而不是 Mockito

java - 如何在 GingerBread 2.3.3 中导入 .so 文件?

android - 如何在 Android 主屏幕小部件中显示加载进度对话框纺车

android - 如何将 Active Android 与内存数据库结合使用以使用 Robolectric 进行单元测试?

java - 如何防止一个方法在测试中调用另一个方法?

android - ClassCastException : NoClassDefFoundError cannot be cast to RuntimeException

Galaxy Tab 上的 Android 打印 API

java - 在 java 中使用 mockito 记录器