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
相关产品推荐
相关产品推荐

