为了账号安全,请及时绑定邮箱和手机立即绑定

制作一个服务模拟列表以随机返回所需的值?

制作一个服务模拟列表以随机返回所需的值?

猛跑小猪 2022-01-19 16:53:34
我有一个包含其他服务列表的服务public class MyFrontService {    @Autowired    private Set<? extends MyAbstractService> allMyServices;}它运行集合中的所有服务。这是 MyAbstractService 的签名public abstract class MyAbstractService {     boolean myMethod();}如果 allMyServices 中的任何服务返回 false,则 myFrontService 返回 false;只有当它的所有服务都返回 true 时,它才会返回 true。我想知道如何使用 Java 8 方式对 MyFrontService 进行单元测试。理想情况下,我可以指定一组服务返回 true,而其他服务返回 false。非常感谢任何帮助/提示
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

这不是 Java 8 特定的,但在您的测试框架内,您可以创建扩展 MyAbstractService 的“假”测试服务类,每个类都确定性地成功或失败。在这些测试类中,您可以重写方法以生成 MyFrontService 将要检查的特定结果。


查看完整回答
反对 回复 2022-01-19
?
UYOU

TA贡献1878条经验 获得超4个赞

您可以在服务的测试类中使用 Mockito,也许可以尝试:

MyAbstractService mockAbstractService1 = mock(MyAbstractService.class);when(mockAbstractService1.myMethod()).thenReturn(true);MyAbstractService mockAbstractService2 = mock(MyAbstractService.class);when(mockAbstractService2.myMethod()).thenReturn(false); HashSet<MyAbstractService> abstractServices = new HashSet<MyAbstractService>();abstractServices.Add(mockAbstractService1);abstractServices.Add(mockAbstractService2);MyFrontService testFrontService = new MyFrontService();testFrontService.allMyServices = abstractServices;

像这样,您创建 Mocks(空对象,具有与创建它的类相同的功能和属性,但除非您添加“何时”,否则什么都不做)并使用您定义的“何时”,每次 myMethod()当调用对象时,它会返回您在 when() 的 thenReturn() 中写入的任何内容。因此,每次为 mockAbstractService1 调用 myMethod() 时,它都会返回 true,而为 mockAbstractService2 调用 myMethod 时会返回 false。


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信