java spring - 无法测试休息服务

时间:2015-12-28 16:54:13

标签: java spring rest junit

我有一个3层服务和一个spring应用程序服务器。 该服务实质上获得了一些参数(通过REST API)调用 一个相应的服务类,它调用从DB执行select SQL语句的相应存储库类(使用JDBC)。

当我运行Tomcat服务器并通过其他客户端测试API时,它可以正常工作。

现在我的问题 - 我试图用下面的代码测试API 而不是ok状态我得到404

public class AdServersReportsResourceIntegrationTest extends AbstractControllerIntegrationTest
{

private final int responseStatusOK = 200;


@Test
public void getReport() throws Exception 
{


    Response response = target("adserver").queryParam("fromDate","2015-11-28").queryParam("toDate", "2015-11-30").queryParam("adServer", 1).queryParam("campaign", "569588").queryParam("groupBy", "site").request(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).get(Response.class);
    Assert.assertEquals(responseStatusOK, response.getStatus());            
}

Resource类看起来像这样:

@Component
@Scope("singleton")
@Path("/adserver")
public class AdServersReportsResource extends Resource{
Logger logger = LoggerFactory.getLogger(AdServersReportsResource.class);

@Autowired
private AdServersReportsService adServersReportsService;

@GET    
@Produces(MediaType.APPLICATION_JSON)
public Response getCampaignCapturedEventsReport(
        @QueryParam("fromDate") String strdayStart,
        @QueryParam("toDate") String strdayEnd,
        @QueryParam("adServer") Integer adServerID, 
        @QueryParam("campaign") String campaignID, 
        @QueryParam("groupBy") String groupBy){

    //input parameter validation

    String response = adServersReportsService.getAdServerComparison(strdayStart,strdayEnd,adServerID,campaignID,groupBy).toString();
    return createObjectSuccessResponse(response);

    }
}
经过一些试验和错误后,我发现如果我用存根替换JDBC代码,测试就可以了。 奇怪的是我尝试更改JDBC代码以便它执行SQL 使用硬编码参数,我直接在DB上单独测试。

任何人都知道它会是什么?

1 个答案:

答案 0 :(得分:0)

当我使用Junit运行测试时,Spring启动并没有实际构建数据库连接(或类似的东西)。我所做的就是嘲笑我用Mockito打电话的服务:

Mockito.when(adServersReportsService.getAdServerComparison(Mockito.any(),Mockito.any(), Mockito.any(),Mockito.any(), Mockito.any())).thenReturn("test");