我试图使用Mockito框架和Junit5创建JUnit测试用例。我正在处理下面的代码:
Class ClasstToBeTested {
FirstClass a = new FirstClass();
public String methodToBeTested() {
String str = a.firstMethod();
return str;
}
}
Class FirstClass {
SecondClass b = new SecondClass();
public String firstMethod() {
String str = b.secondMethod();
return str;
}
}
我有一个像上面这样的类结构,我需要模仿第二种方法。
我试过@spy on FirstClass并嘲笑SecondClass和secondMethod,但嘲笑没有发生。在这种情况下我怎么能嘲笑呢?
注:我不能改变班级结构。
你有一些选择:
第二类
实例,而不是在第一类
中构建它: class FirstClass {
private final SecondClass b;
// Injecting the SecondClass instance
FistClass(SecondClass b) {
this.b = b;
}
public String firstMethod() {
String str = b.secondMethod();
return str;
}
}
然后你可以在测试中注入一个模拟。
class FirstClass {
SecondClass b = new SecondClass();
// Annotate with a visibility for test annotation if available.
// Here one can inject a mock too, but can cause problems if used inadvertently.
void setSecondClassForTests(SecondClass b) {
this.b = b;
}
public String firstMethod() {
String str = b.secondMethod();
return str;
}
}
然后在测试中调用setter并通过模拟。
final Field declaredField = instanceOfFirstClass.getClass().getDeclaredFields("b");
declaredField.setAccessible(true);
declaredField.set(instanceOfFirstClass, yourMockedInstance);
我尝试运行此测试: 但是我得到了NullPointer异常: Mockito.when 我错过了什么?
本文向大家介绍php新建文件的方法实例,包括了php新建文件的方法实例的使用技巧和注意事项,需要的朋友参考一下 php文件如何新建?具体步骤如下: 在桌面空白处单击右键 -> 新建 -> 文本文件。 双击打开此文本文件后,在里面输入PHP代码,输入完后,选择文件 -> 另存为... 这里输入你的PHP文件名,扩展名为PHP。 当然你也可以用网页编辑工具,更直观和方便。如:Dreamweaver,直
本文向大家介绍Ajax实现局部刷新的方法实例,包括了Ajax实现局部刷新的方法实例的使用技巧和注意事项,需要的朋友参考一下 前言 最近复习了一下jQuery的一些内容,特此整理一下一些能用的得到的知识点,以前才学jQuery的时候压根就没有注意到那么多的细节,另外最近一直都在整理前端的一些工作中学到的小经验,大概还会有十篇左右的内容,就会慢慢开始整理后端,框架,以及数据库的一些小知识点 一、 Aj
本文向大家介绍ubuntu上安装python的实例方法,包括了ubuntu上安装python的实例方法的使用技巧和注意事项,需要的朋友参考一下 怎么在ubuntu安装python? python在ubuntu下有几种安装方法: ● 通过ubuntu官方的apt工具包安装 ● 通过PPA(Personal Package Archive) 的apt工具包安装 ● 通过编译python源代码安装 通过
问题内容: 我希望能够通过在已实例化的对象上调用方法来创建对象的新实例。例如,我有一个对象: 我希望能够调用并拥有两个有机体类型的对象。此时我的方法如下所示: 并且我非常确定它不起作用(我甚至不确定如何测试它。我在本文中尝试了gc方法)。那么,如何使我的对象创建自己的副本,就像我创建的第一个对象(带有)一样,该副本是可访问的? 问题答案: 另一个选项-如果方法中未使用实例(): 这样可以确保生物产
要在实例上调用方法,您必须获取实例的引用并调用该方法。该示例说明了如何获取引用和调用方法,检查 API 以获取可用方法的列表。 // 3 ways of doing the same thing $('#jstree').jstree(true) .select_node('mn1'); $('#jstree') .jstree('select_node', 'mn2'); $.