You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JUnit测试:传入自定义对象与直接new类到thenReturn哪种更优?

在JUnit+Mockito中,thenReturn传入预创建对象还是直接new?

两种写法都合法,具体选哪种取决于你的测试需求:

先创建对象存变量的写法

className object = new className("test");
when(className.someMethod()).thenReturn(object);

这种写法的优势:

  • 如果你后续需要复用这个实例(比如测试中多次用到同一个返回对象),或者要验证这个对象的状态/行为(比如断言属性值、验证它的方法是否被调用),单独存变量会让代码更清晰,方便后续引用。
  • 给变量起个有意义的名字(比如expectedUserDto),能提升测试代码的可读性,一眼就知道这个实例的用途。

直接在thenReturn里new的写法

when(className.someMethod()).thenReturn(new className());

这种写法的优势:

  • 如果返回的对象只是一次性的简单返回值,不需要后续引用或验证,直接new更简洁,减少不必要的变量,让测试代码更紧凑。
  • 适合返回纯数据类(比如DTO、POJO)的场景,这类对象通常没有复杂的构造副作用。

总结

  • 当需要复用实例或验证其状态时,选第一种写法;
  • 当返回值是一次性无状态实例时,选第二种写法更高效。

内容的提问来源于stack exchange,提问作者Deep Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:50:33