编辑
在阅读FAQ时,它让我了解了可能导致问题的原因。为了尝试一下,我将stubbed方法open()
的可见性更改为public,并按预期执行,没有引发任何异常。
我不确定这是一个错误还是版本1.10.19的预期行为。
原始帖子
在我的Android项目中,我使用Mockito来简化一些(插装)测试的实现。我能够模拟一些非void方法,但没有弄清楚如何正确地存根一个void方法。
我试图测试一个类House
。一个House
有一个类型为Door
的属性和一个方法openDoor()
。一个Door
和一个类型为Handle
的属性以及一个方法open()
。当我调用openDoor()
时,我想检查是否调用了open()
,所以我编写了以下代码:
@Test
public void testOpenDoorInitial() {
Door stubbedDoor = mock(Door.class);
doNothing().when(stubbedDoor).open();
myHouse.setDoor(stubbedDoor); //myHouse has been initialized
myHouse.openDoor();
verify(stubbedDoor, times(1)).open();
}
public class House {
Door door;
//rest of code
void setDoor(Door d){
door = d;
}
void openDoor(){
// some conditions
door.open();
}
}
public class Door {
Handle handle;
//... rest of code
void open(){
handle.tryToUse(); //Throws NullPointException
}
}
问题是,一个NullPointerExc0019
被抛出在行doNothing.when(ustbedDoor). open();
,告诉我句柄
是null. doNo()似乎实际上调用open()
,这我不指望。
有人知道这个问题的根源吗?我是新来的,所以我可能错过了一些明显的东西。
为了在仪器测试中启用Mockito,我导入了以下模块。
androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile "com.crittercism.dexmaker:dexmaker:1.4"
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.4"
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.4"
这可能与Mockito的问题212有关,在该问题中,包私有父类可能会导致Mockito失败,因为Mockito无法存根隐藏的方法。(这可能与编译器为解决类层次结构中的可见性复杂性而引入的合成方法有关。)
Mockito 2.0通过从CGLIB切换到ByteBuddy来解决这个问题;我不记得ByteBuddy是否是任何1. x版本的一部分。但是,您将Mockito与DexMaker一起使用,这可能会有类似的问题。
尝试使用较新的版本,您正在使用1.10.19。我不确定,但正如你在这里看到的,这个问题似乎已经解决了。在这里您可以找到版本列表。
问题内容: 这可能吗?我尝试过,但EasyMock抱怨时间必须> = 1 问题答案: 我设法提出了一个解决方案:
在为我的CardView设置onclick listner时获得Nullpointer异常。 错误为: 原因:java.lang.NullPointerException:试图对com.jaysurya.project_scrollwithTap.mainactivity.onCreate(mainactivity.java:27)处的空对象引用调用虚拟方法“void android.suppor
已更新测试用例,但仍不工作。
在animationEnd中,设置的文本可以很好地工作,但是在调用这个void之后,它应该改变文本,但是它没有改变文本。
我有以下代码 我对嘲笑不熟悉。我有以下疑问。我正在尝试测试公共方法。 我是否可以断言私有变量workDone的值? 是否可以验证超类中的方法调用? 如何在方法中模拟私有方法调用?
我是新的Android开发者,因为应用程序在运行时崩溃而面临问题。请检查下面的代码。 我是android中Recycler view的新手,我正在设计文本的样式,所以我做了如下的工作,这是我的适配器类。 onBindViewHolder()出现异常:team1Tv=itemView。findViewById(R.id.team1TV); 这是为显示磁贴列表而创建的自定义xml。 它在加载时崩溃了,