我有一个包含其他服务列表的服务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 将要检查的特定结果。
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。
添加回答
举报
0/150
提交
取消