为什么mockito打电话为存根方法。
为什么它使一个实际调用func下当... then返回我已经检查了当做调试。
@Test
public void function(){
MyClassChild obj = mock(MyClassChild.class);
when(obj.func("abc")).thenReturn(3);
}
...
class MyClass {
public int func(String s) {
if (s.equals("abc"))
return 3;
else
return 1;
}
}
class MyClassChild extends MyCLass {
}
我尝试通过进行以下测试来重播您的问题:
public class StackTest {
@Test
public void mockedFunction() {
MyClass obj = mock(MyClass.class);
when(obj.func("abc")).thenReturn(3);
assertEquals(3, obj.func("abc"));
}
@Test
public void function() {
MyClass obj = new MyClass();
assertEquals(7, obj.func("abc"));
}
}
和
public class MyClass {
public int func(String s) {
if (s.equals("abc"))
return 7;
else
return 9;
}
}
成功执行的所有测试。你能展示一下你是如何调用测试的吗?
问题内容: 因此,我开始为我们的Java Spring项目编写测试。 我使用的是JUnit和Mockito。有人说,当我使用when()… thenReturn()选项时,可以模拟服务,而无需模拟它们。所以我要做的是设置: 但是无论我执行哪一个子句,我总会得到一个NullpointerException,这当然是有道理的,因为input为null。 另外,当我尝试从对象模拟另一个方法时: 在那里,
我必须测试一些SLSB的方法,它在当前对象上调用另一个方法(使用这个关键字),我需要以某种方式将它存根。 请考虑以下简化代码: 为了存根getSomeDBValue()方法,我可以使用@mock和@injectMocks注释将mock注入到该类,但我不知道如何正确地存根anotherMethod()。要存根它,我需要在模拟对象上做这件事,所以我尝试将引用传递到当前对象作为参数,在测试中只传递模拟对
是什么导致真正的实现被调用,我如何防止它?
问题内容: 我正在尝试使用Mockito 1.8.5存根方法,但是这样做会调用实际方法实现(以“”作为parm值),从而引发异常。 我尝试模拟的方法如下所示。没有最终方法或类。 我正在传递模拟的类如下所示: 是什么导致真正的实现被调用,我该如何防止呢? 问题答案: Mockito代码无法访问您正在模拟的方法。 因为测试代码和被测代码在同一程序包中,所以编译器允许您以这种方式设置模拟,但是在运行时,
问题内容: 我是mockito的新手。 需要知道存根和时间之间的区别 两者之间有什么区别? 问题答案: 实际上,它们在技术上是相同的。最初创建Mockito时,我们是在谈论存根,因此词汇遵循了这个想法。后来人们认为最好是用 交互 而非 技术 术语来思考,因此词汇表遵循的是 ……当时……之后的 风格。词汇上的这种变化有助于人们思考 对象* 之间的 交互 , 消息传递 。在面向对象的语言( 引用Ala
我试图通过在传入字符串“John”时返回一个用户对象来建立类(spring-data-jpa存储库)的方法。 发生的情况是,在userService中,当调用users.findbyUsername(“John”)时,它总是返回null,而不是我定义的任何用户对象: 当我在测试方法中放置断点并比较users和UserService.users时,它们是相等的。 pom版本