Покрытие кода EclEmma JAVA - Невозможно покрыть уровень обслуживания RESTful Webservice - PullRequest
0 голосов
/ 04 июня 2010

Я использую плагин EMMA eclipse для генерации отчетов о покрытии кода. Мое приложение - веб-сервис RESTFul. Junits написаны так, что клиент создается для веб-службы и вызывается с различными входными данными.

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

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

Доклад:

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();
  }

Ответы [ 2 ]

1 голос
/ 30 марта 2012

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

0 голосов
/ 15 июля 2010

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

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

...