在编写测试用例时,我使用Mockito模拟某个类。
有没有办法在返回值之前打印一些语句?例如:
when(x.callFunction(10).thenReturn(new String("Hello"));
上述声明有效,但我无法做到以下几点:
when(x.callFunction(10).thenReturn({
System.out.println("Mock called---going to return hello");
return new String("Hello");});
我喜欢其他答案,但鉴于你最近的评论:
我将在最终代码中使用thenReturn。这更多的是测试我的测试代码,并检查我的模拟函数是否被调用!
我有另一个想法给你:不要回复/打印那个电话;改用throw()!
重点是:控制台中的打印语句有时很有用;但它们很容易被忽视。如果整个目的是确保某个调用在某个模拟上发生;然后抛出一个异常,而不是返回一个值。因为JUnit会给你直接且难以忽视的反馈;通过测试用例失败。
如果没有调用mock,你甚至可以更进一步,在测试中设置@expected,这样你就有了一个自动测试这个方面的方法;没有例外;测试将失败。
如果您要创建的对象不是Final
,那么除了@Roland Weisleder提供的then答案
之外,您可以在thenBack
中使用带有init块的匿名子类,例如以下示例代码:
class FoobarFactory {
public Foobar buildFoobar() {
return null;
}
}
class Foobar {
private String name;
public Foobar(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
模拟代码为:
@Test
public void testFoobar() throws Exception {
FoobarFactory foobarFactory = mock(FoobarFactory.class);
when(foobarFactory.buildFoobar()).thenReturn(new Foobar("somename") {
{
System.out.println("Creating mocked Foobar");
}
});
Foobar foobar = foobarFactory.buildFoobar();
assertThat(foobar.getName(), is("somename"));
}
使用then答案
,您可以在每次调用模拟方法时执行其他操作。
when(x.callFunction(10)).thenAnswer(new Answer<String>() {
public String answer(InvocationOnMock invocation) {
System.out.println("Mock called---going to return hello");
return "Hello";
}
});
另请参见Answer Vs thenReturn。
我正在使用一个可以进行温度转换的程序,并且已经有了代码,但现在我必须制作一个测试代码的程序。对于我需要帮助的部分,我从这样的构造函数开始: 然后我制定了一种方法,从摄氏度或华氏度中获取温度,如下所示: 最后,我在测试编码中写道: 我的问题是,当我运行这个程序时,温度没有显示出来,当我输入此代码的输出时,它返回原始温度(52华氏度)。我如何让它显示我需要的温度(11.1摄氏度)?另外,请注意,我刚刚
问题内容: 我正在编写一个小程序,我想使用: 这很好,除了在打印打印语句后没有提示的事实。喜欢: 如果可能的话,如何删除“无”?我也确实搜索了这个问题,但是什么也没有在输入中返回none。 问题答案: 将字符串作为参数,它将自动打印,但返回;这是由打印的。您的代码等效于: 而是使用构建提示并将其直接传递给:
我目前正在学习Spring boot,我一直在测试一个项目——非常感谢任何帮助,因为我是这里的初学者。 我有一个rest控制器测试,使用Mockito,当使用Mockito.when()调用方法时,该测试似乎忽略了Then返回。 这是整个班级: 名为“testCreateUser”的测试没有问题地通过了。给我一个问题的是名为“testFindUserById”的测试。 以下是我尝试测试的控制器方法
我对反应性编程相对较新。我的问题是关于
所以我有这个代码,叫我白痴哈哈,但是我不能让它打印7。 代码: 我需要知道如何改变与函数中的参数同名的变量。 任何帮助都将不胜感激,如果你不明白这个问题,我很乐意解释更多。
我不得不使用全局变量found来指示在哪里找到了一个和。返回语句始终未定义。 此外,如果在下面的if语句中使用return语句,代码将无法正常工作。 这不是问题的最佳解决方案,但这是我得到的工作版本。 返回语句之间的****,删除时代码工作,否则我要么得到false或未定义。我不明白这部分!为什么删除返回就能解决问题,我认为每个递归调用都必须用返回语句进行。 问题可能是由于多次呼叫造成的吗?我是不