Java JUnit for Spring Integration Activator,返回类型为消息<&燃气轮机;
我正在尝试编写一个JUnit测试用例。我变得毫无头绪,我该如何为下面的方法编写测试用例。 所有这些都需要嘲笑Java JUnit for Spring Integration Activator,返回类型为消息<&燃气轮机;,java,spring,unit-testing,junit,spring-integration,Java,Spring,Unit Testing,Junit,Spring Integration,我正在尝试编写一个JUnit测试用例。我变得毫无头绪,我该如何为下面的方法编写测试用例。 所有这些都需要嘲笑 @Autowired private DoseService doseService; public Message<List<Dose>> getAllDoses() { log.info("GET method"); List<Dose> doseLst = doseService.getAllDoses(); retur
@Autowired
private DoseService doseService;
public Message<List<Dose>> getAllDoses() {
log.info("GET method");
List<Dose> doseLst = doseService.getAllDoses();
return MessageBuilder.withPayload(doseLst).setHeader("http_statusCode",
HttpStatus.OK).build();
}
@Autowired
私人DoseService DoseService;
公共消息getAllDoges(){
log.info(“获取方法”);
List doseLst=doseService.getAllDoges();
返回MessageBuilder.withPayload(doseLst).setHeader(“http\U状态码”,
HttpStatus.OK);
}
提前感谢您的帮助。看看您的方法,我想说只有
DoseService
必须被模仿。其他一切看起来都很好,您也不需要将消息作为参数
对于模拟,您可以使用Spring Boot中的@MockBean
。查看您的方法,我会说只有DoseService
必须进行模拟。其他一切看起来都很好,您也不需要将消息作为参数
对于模拟,您可以使用Spring Boot中的@MockBean
。我编写了下面这样的测试用例,效果很好
@Test
public void testGetAllDoses() {
List<Dose> doses = createDoses();
Message<List<Dose>> msg = MessageBuilder.withPayload(doses)
.setHeader("http_statusCode", HttpStatus.OK).build();
when(doseService.getAllDoses()).thenReturn(doses);
Message<List<Dose>> returned =doseServiceActivator.getAllDoses();
assertThat(returned.getPayload()).isEqualTo(msg.getPayload());
}
private List<Dose> createDoses(){
List<Dose> doses = new ArrayList<Dose>();
Dose dose1 = new Dose();
dose1.setDoseId(1);
dose1.setDoseValue("80");
Dose dose2 = new Dose();
dose2.setDoseId(2);
dose2.setDoseValue("120");
doses.add(dose1);
doses.add(dose2);
return doses;
}
@测试
public void testGetAllDoges(){
列表剂量=创建剂量();
Message msg=MessageBuilder.withPayload(剂量)
.setHeader(“http_statusCode”,HttpStatus.OK).build();
当(doseService.getAllDoges())。然后返回(剂量);
返回的消息=doseServiceActivator.getAllDoges();
assertThat(返回.getPayload()).isEqualTo(msg.getPayload());
}
私有列表{
列表剂量=新的ArrayList();
剂量1=新剂量();
dose1.setDoseId(1);
dose1.setDoseValue(“80”);
剂量2=新剂量();
dose2.setDoseId(2);
dose2.setDoseValue(“120”);
剂量。添加(剂量1);
剂量。添加(剂量2);
返回剂量;
}
我像下面这样编写了测试用例,效果很好
@Test
public void testGetAllDoses() {
List<Dose> doses = createDoses();
Message<List<Dose>> msg = MessageBuilder.withPayload(doses)
.setHeader("http_statusCode", HttpStatus.OK).build();
when(doseService.getAllDoses()).thenReturn(doses);
Message<List<Dose>> returned =doseServiceActivator.getAllDoses();
assertThat(returned.getPayload()).isEqualTo(msg.getPayload());
}
private List<Dose> createDoses(){
List<Dose> doses = new ArrayList<Dose>();
Dose dose1 = new Dose();
dose1.setDoseId(1);
dose1.setDoseValue("80");
Dose dose2 = new Dose();
dose2.setDoseId(2);
dose2.setDoseValue("120");
doses.add(dose1);
doses.add(dose2);
return doses;
}
@测试
public void testGetAllDoges(){
列表剂量=创建剂量();
Message msg=MessageBuilder.withPayload(剂量)
.setHeader(“http_statusCode”,HttpStatus.OK).build();
当(doseService.getAllDoges())。然后返回(剂量);
返回的消息=doseServiceActivator.getAllDoges();
assertThat(返回.getPayload()).isEqualTo(msg.getPayload());
}
私有列表{
列表剂量=新的ArrayList();
剂量1=新剂量();
dose1.setDoseId(1);
dose1.setDoseValue(“80”);
剂量2=新剂量();
dose2.setDoseId(2);
dose2.setDoseValue(“120”);
剂量。添加(剂量1);
剂量。添加(剂量2);
返回剂量;
}
是正确的,在这里我不需要任何输入。但是,如果我必须将消息作为输入,如何构建它呢。让我们说消息?使用相同的MesaageBuilder
!谢谢你的建议。我能够成功地编写测试用例,请考虑接受答案:是的,在这一点上,我不需要任何输入。但是,如果我必须将消息作为输入,如何构建它呢。让我们说消息?使用相同的MesaageBuilder
!谢谢你的建议。我能够成功地编写测试用例,请考虑接受答案: