如何从spring测试类调用服务类方法并获得实际的返回响应

时间:2017-02-10 06:37:41

标签: spring

如何从junit中的测试类调用服务方法。我无法在Junit测试类中调用我们的服务类方法。请指导我调用服务类方法并获得实际响应。服务类方法(类名:SubmitContractServiceImpl的.java)

@Override
public ScheduleNowUrlBean getScheduleNowUrl(String invoiceId, String status,             String checksum)   throws Exception  {
    log.info("getScheduleNowUrl method started.");
    ScheduleNowUrlBean scheduleNowUrlBean = null;
    try {
        scheduleNowUrlBean = new ScheduleNowUrlBean();
        if (validateChecksum(invoiceId, status, checksum)) {
            scheduleNowUrlBean.setScheduleUrl(scheduleNowUrl == null ? "" :     scheduleNowUrl.trim());
            scheduleNowUrlBean.setFlag(true);
        } else {
            scheduleNowUrlBean.setFlag(false);
        }
    } catch (Exception ex) {
        scheduleNowUrlBean.setErrorCode("2000");
        scheduleNowUrlBean.setErrorDescription("Some error occured.");
        log.error("Exception in getting schedule now url.Exception is: " +     ex.getMessage());
    }
    log.info("getScheduleNowUrl method completed.");
    return scheduleNowUrlBean;
    }


Test class method ( SubmitContractServiceImplTest.java)

@Test
public void validateChecksumTest() throws Exception {
    ScheduleNowUrlBean scheduleNowUrlBean = new ScheduleNowUrlBean();
    scheduleNowUrlBean.setFlag(true);
    scheduleNowUrlBean.setScheduleUrl("https://mbusa-servicescheduling-    test.cfapps.io/");
    given(this.submitContractServiceImpl.getScheduleNowUrl("EXXCS0614R",    "success",
                  "965r6PO1%2BIsaVEZhzTFChs5xGFTfJPL1x%2FT8kDWJbos%3D")).willReturn(scheduleNowUrlBean);

}

i am not able to call our service class method to Test class.It is a     springBoot application and the service class in for RestController.Basically it    is a rest service.
we don't want to call controller method.we test only our service class     method.?

1 个答案:

答案 0 :(得分:0)

如果它是一个Spring启动应用程序,你应该有一个类似于:

的Application类
@SpringBootApplication
@ComponentScan(basePackages = {"com...."})
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

然后你的服务将有一个注释,以确保它被添加到spring bean容器中:

@Service
public class ScheduleNowUrlBean {
}

然后你可以在测试中使用:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class LookUpControllerTest {

    @Autowired
    private ScheduleNowUrlBean scheduleNowUrlBean ;

@Test
public void validateChecksumTest() throws Exception {
    scheduleNowUrlBean.setFlag(true);
    scheduleNowUrlBean.setScheduleUrl("https://mbusa-servicescheduling-    test.cfapps.io/");
    given(this.submitContractServiceImpl.getScheduleNowUrl("EXXCS0614R",    "success",
                  "965r6PO1%2BIsaVEZhzTFChs5xGFTfJPL1x%2FT8kDWJbos%3D")).willReturn(scheduleNowUrlBean);

}

请参阅http://docs.spring.io/spring/docs/4.3.6.RELEASE/spring-framework-reference/htmlsingle/#integration-testing.html