2010-06-04 2 views
0

Я использую плагин EMMA eclipse для создания отчетов о покрытии кода. Мое приложение - веб-сервис RESTFul. Жунины написаны так, что клиент создан для веб-службы и вызывается с различными входами.EclEmma JAVA Охват кода - Нельзя использовать сервисный уровень RESTful Webservice

Однако EMMA показывает покрытие 0% для исходной папки. Только тестовая папка покрыта.

Сервер приложений (сервер причалов) запускается с использованием основного метода.

Доклад:

Element   Coverage Covered Instructions Total Instructions 
MyRestFulService 13.6%   900      11846 
src    0.5%   49      10412 
test    98%   1021      1434 

Junit Метод испытания:

@Test 
    public final void testAddFlow() throws Exception { 
     Client c = Client.create(); 
     WebResource webResource = c.resource(BASE_URI); 

     // Sample files for Add 

     String xhtmlDocument = null; 

     Iterator iter = mapOfAddFiles.entrySet().iterator(); 

     while (iter.hasNext()) { 
       Map.Entry pairs = (Map.Entry) iter.next(); 

       try { 
        document = helper.readFile(requestPath 
           + pairs.getKey()); 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       /* POST */ 
       MultiPart multiPart = new MultiPart(); 
       multiPart.bodyPart(.... 
       ........... 
       ClientResponse response = webResource.path("/add").type(
          MEDIATYPE_MULTIPART_MIXED).post(ClientResponse.class, 
          multiPart); 

        assertEquals("TESTING ADD FOR >>>>>>> " + pairs.getKey(), 
           Status.OK, response.getClientResponseStatus()); 



       } 
     } 
    } 

Вызывается метод обслуживания:

@POST 
    @Path("add") 
    @Consumes("multipart/mixed") 
    public Response add(MultiPart multiPart) 
       throws Exception { 
     Status status = null; 
     List<BodyPart> bodyParts = null; 
     bodyParts = multiPart.getBodyParts(); 

     status = //call to business layer 

     return Response.ok(status).build(); 
    } 

ответ

1

Emma предлагает еще одно решение для выполнения автономных приборов. Это помогло мне решить проблему.

0

сервисный код не будет рассматриваться, если услуга вызывается через HTTP- вызов. Однако прямой вызов методов webservice/business layer путем передачи входных данных является единственным решением. Так и с любым веб-приложением. Мы непосредственно издеваемся над бизнес-слоем.

Я использовал это решение, чтобы получить покрытие кода для моих Junits.

Смежные вопросы