class A {
public long a() {
if(something) {
return quicklyCalculatedResult
} else {
return b() run on separate thread, with this one blocked
}
}
public long b() {} //doStuffOnCurrentThread;
}
我对b()有一套完整的测试,它完成了繁重的任务。不幸的是,我不得不做一个丑陋的想法,比如()(遗留代码),我不想复制所有的测试。方法b()的。此外,这两个都需要公开。
我想验证在某些情况下a()调用b(),但我不能这样做,beacause测试类不是mock。我需要一种方法来验证该方法是在真实对象上调用的,而不仅仅是在模拟对象上调用的。
A classUnderTest = mock(A.class);
when(classUnderTest.a()).thenCallRealMethod();
classUnderTest.a();
verify(classUnderTest).b()
val classUnderTest = mock(A::class.java)
`when`(classUnderTest.a()).thenCallRealMethod()
classUnderTest.a()
verify(classUnderTest).b()
val classUnderTest = mock<A>()
doCallRealMethod().whenever(classUnderTest).a()
classUnderTest.a()
verify(classUnderTest).b()
val classUnderTest = spyk<A>()
every { classUnderTest.b() } returns 1L
classUnderTest.a()
verify { classUnderTest.b() }
我正在尝试测试,只有在调用case的情况下,否则不会调用该方法。 但这会调用我的,并在内抛出空指针。因为我的行为不会调用,所以我如何在不调用的情况下测试它。
问题内容: 假设我有一个带有两个我不在乎的方法的类,这称为… 下面的两个(仍然来自我的应用程序中的另一个类)都应该通过我的测试: 我不在乎哪个被调用,我只想调用两个变体之一。 在Mockito中,我通常可以执行以下操作: 要么: 是否有一种本地方式说“验证 一个或另一个 至少发生一次”? 还是我必须做一些粗略的事情: 问题答案: 您可以结合使用:
当有两个公共方法并且一个方法调用同一个类中的另一个公共方法时,测试方法的方法是什么? 在这种情况下,我应该如何编写单元测试? 一个例子 这个例子并没有显示所涉及的方法的复杂性,而是概念的复杂性。 我应该分别测试加法和乘法吗?如果我只测试乘法,我觉得我们错过了不能提供参数的情况。 假设要分别测试和,我应该能够模拟?这怎么可能? 假设要分别测试乘法和加法,我不应该模拟,我应该让加法按原样执行吗。如果是
考虑以下代码: 我想做的是,在异常测试中,标记我希望调用doSomething1()。然而,在转换器上抛出异常。convert(),这意味着永远不会调用verify()调用。因此,verifyNoMoreInteractions()在after()中失败。 注意:这是一个非常通用的示例,用于隐藏我们的任何内部代码。
我对DB2中的过程有疑问。我使用“create procedure”创建了一个存储过程,在这个存储过程中,我还有一个使用“declare procedure”声明的存储过程。但是,这个由declare创建的过程不能使用“call”调用。 当我尝试运行该过程时,Db2返回: [代码:-440,SQL状态:42884]DB2 SQL错误:sqlcode=-440,sqlstate=42884,sqle
我正在使用PowerMockito为一个类编写junit。我可以模拟私有方法,但无法模拟另一个类的公共方法。在下面的测试类中,B的对象没有被模仿。我做错了什么? 另一个具有所有公共方法的类B 现在我有A班的考级 下面是我使用的依赖关系-