Spring:对具有字段和构造函数注入的类进行单元测试

2023-12-29

我有以下课程设置。

class Base {
   @Autowired
   private BaseService service; //No getters & setters
   ....
}

@Component
class Child extends Base {
  private final SomeOtherService otherService;

  @Autowired   
  Child(SomeOtherService otherService) {
     this.otherService = otherService;
  }
}

我正在为以下内容编写单元测试Child班级。 如果我使用@InjectMocks那么otherService结果为空。如果我使用,构造函数Child测试设置中的类,然后是字段Base类结果是null.

我知道所有关于字段注入是邪恶的争论,但我更感兴趣的是知道是否有一种方法可以在不改变方式的情况下解决这个问题Base and Child类注入它们的属性?

Thanks!!


只需这样做:

public class Test {
    // Create a mock early on, so we can use it for the constructor:
    OtherService otherService = Mockito.mock(OtherService.class);

    // A mock for base service, mockito can create this:
    @Mock BaseService baseService;

    // Create the Child class ourselves with the mock, and
    // the combination of @InjectMocks and @Spy tells mockito to
    // inject the result, but not create it itself.
    @InjectMocks @Spy Child child = new Child(otherService);

    @Before
    public void before() {
        MockitoAnnotations.initMocks(this);
    }
}

Mockito 应该做正确的事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring:对具有字段和构造函数注入的类进行单元测试 的相关文章

  • Angular 2和Jasmine单元测试:无法获取innerHtml

    我正在使用测试组件 WelcomeComponent 的示例之一 import Component OnInit from angular core import UserService from model user service Co
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Coffeescript + 单元测试:全局变量?

    我正在尝试使用 Jasmine 对用 CoffeeScript 编写的小型应用程序进行单元测试 我发现很多资料都说单元测试可以在从 CoffeeScript 编译的 JS 上完美地完成 如果所有内容都包装在匿名函数中以避免污染名称空间 如何
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 使用Spring将war文件WEB-INF目录下的资源导入到applicationContext文件中

    我在我的项目中使用 Spring 框架 我想导入下面的所有 xml 资源 文件 WEB INF CustomerService spring integration Jobs applicationContext配置文件中war文件的目录
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • J2ME 支持 HTTP PUT 吗?

    我刚刚注意到 MIDP 2 0 API 中的一个奇怪的事情 HttpConnection 类 apidocs 明确引用了方法 GET POST 和 HEAD 但没有其他方法 这是否意味着它们不受支持 http java sun com ja
  • 如何在 powershell 中列出所有已安装、可运行的 cmdlet?

    我想列出 powershell 中所有已安装 可运行的 cmdlet 和函数 但是Get Command正在列出以某种方式 存在 但未加载且不可运行的 cmdlet 举个例子 Get Command lists New IseSnippet
  • 使用 Gmail Python 发送电子邮件

    我正在尝试发送电子邮件 但遇到此错误 smtplib SMTPAuthenticationError 534 b 5 7 9 Application specific password required Learn more at n5 7
  • 为什么刷新页面时 localStorage 条目会重置?

    我正在为我的班级制作一个猜谜游戏 我们应该实现一个本地存储的记分系统 我以为我理解了这个概念 但它并没有按照我想要的方式工作 当我玩游戏时 这些值存储在本地存储中 但是当我刷新时 这些值会重置 任何见解都会很棒 下面是我的脚本的开头 下面是
  • 如何在异步可运行返回值后 JUnit 测试 Android LiveData 值

    我使用 MVVM 模式 Android 生命周期组件和 LiveData 创建了一个示例登录屏幕应用程序 在存储库上 我使用延迟处理程序模拟了一些任务 如何使用处理程序测试 ViewModel 和存储库方法 由于它是异步过程 如何在可运行返
  • 自动运行脚本以运行线性回归 R

    我希望在下面的数据帧上运行线性回归 test lt data frame abc c 2 4 3 2 8 9 9 8 10 0 3 2 5 4 city1 0 c 5 3 2 6 3 5 4 7 8 4 4 5 5 city1 1 c 2
  • PyQt 类不适用于第二次使用

    我正在使用 PyQt 完全加载页面 包括 JS 并使用 Beautiful Soup 获取其内容 第一次迭代时工作正常 但之后就崩溃了 我对 Python 的了解不多 对 PyQt 的了解更少 所以非常欢迎任何帮助 借用的类here htt
  • 将字符串转换为元组而不拆分字符

    我正在努力将字符串转换为元组 而无需在此过程中拆分字符串的字符 有人可以建议一个简单的方法来做到这一点 需要一个内衬 Fails a Quattro TT print tuple a Works a Quattro TT print tup
  • 如何确定套接字listen() backlog参数的值?

    我应该如何确定侦听套接字的积压参数使用什么 简单地指定一个非常大的数字会有问题吗 这个问题的答案很长Winsock 程序员常见问题解答 http tangentsoft net wskfaq advanced html backlog 它详
  • 我必须在 django 类视图中包含authentication_classes 属性吗

    根据 Django Rest Framework 当您想要指定要使用的身份验证时 您可以在设置文件中将其设置为全局 例如 REST FRAMEWORK DEFAULT AUTHENTICATION CLASSES rest framewor
  • 变量未定义编译器错误

    我是 Excel 的长期狂热用户 但刚刚开始学习 VBA 我正在使用以下代码 但当我尝试运行时出现错误Sub test 编译错误 变量未定义 你能帮我找出问题所在吗 Option Explicit Function toFarenheit
  • Heroku 上的 pg_largeobject 访问

    我正在尝试清理 Heroku 上的 postgres 数据库 其中一些大型对象已经失去控制 我想删除不再使用的大型对象 在我的开发机器上 我可以执行以下操作 select distinct loid from pg largeobject
  • 在编译时确定整型的位数

    NOTE 我在以下位置添加了一个类似但大大简化的问题版本诸如 msg long 之类的函数与候选 msg int32 t 和 msg int64 t 的不明确重载 https stackoverflow com questions 1057
  • Bash 使用 subshel​​l 和 substring 进行错误替换

    一个人为的例子 给出 FOO foo bar baz 这有效 在 bash 中 BAR basename FOO result is BAR baz BAZ BAR 0 1 result is BAZ b 这不 BAZ basename F
  • ember data 1.0.x 双向时不保存 hasMany 关系

    hasMany 关系之一不发送回服务器 您应该如何建模双向关系 以下是相关对象 Encompass Selection DS Model extend text DS attr string submission DS belongsTo
  • 如何将所选项目位置更改为 Recyclerview 中的顶部?

    I have recyclerview因为我想在选择项目后将项目的位置动态更改为顶部recyclerview 请建议解决上述问题的最佳方法 您需要将所选项目与列表中的顶部项目交换 然后通知您的适配器位置更改 示例代码如下所示 Collect
  • 无法使用 jQuery 从外部文件加载 xml

    我正在尝试使用以下代码加载外部 xml 但它不起作用 document load data xml function response status xhr console log xhr status xhr statusText 我两个
  • JSTL 迭代对象列表

    我在 jsp 中获取对象的列表 myList 我得到的对象属于例如 MyClass 我想通过 JSTL 迭代这个列表 JSP代码如下
  • 通过 NAT 在端口 2000 上运行的 FTP 服务器无法在被动模式下工作

    我正在 Windows 上运行 FILE Zilla ftp 服务器 其中一台 LAN 电脑连接到我的路由器 我正在尝试使用路由器 WAN ip 从路由器外部的网络访问 FTP 服务器 广域网到局域网 通过添加端口转发规则 NAT 在路由器
  • Spring:对具有字段和构造函数注入的类进行单元测试

    我有以下课程设置 class Base Autowired private BaseService service No getters setters Component class Child extends Base private