Я использую arquillian для проверки конечной точки REST. Вот примерная конечная точка и тестовый пример, который мы используем.Покрытие кода для вызовов REST с использованием jacoco
ОСТАЛЬНЫХ ENDPOINT
@Path("/v1/example")
@Produces("application/json")
@Consumes("application/json")
public class HelloWorldResource {
@EJB
HelloWorldRemote helloWorldRemote;
@GET
@Path("/hello")
public Response getSayHello(){
String helloText = helloWorldRemote.sayHello();
final Response response = Response.ok(helloText).build();
return response;
}
public String nonRESTSayHello(){
return "SAY HELLO NONREST";
}
}
TEST СЛУЧАЙ:
@RunWith(Arquillian.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class HelloWorldResourceTest {
@Test
@OperateOnDeployment("REST")
public void testGetSayHello() {
System.out.println("testGETSAYHELLO!!!!!");
Client client = ClientBuilder.newClient();
Invocation.Builder builder = client.target(
"http://localhost:8080/CoverageTest/api/v1/example/hello")
.request(MediaType.APPLICATION_JSON_TYPE);
javax.ws.rs.core.Response response = builder.get();
assertEquals(200, response.getStatus());
}
/*
* @Test
* public void testNonRESTSayHello(){
* HelloWorldResource hwr=new HelloWorldResource();
* String str = hwr.nonRESTSayHello();
* assertEquals("SAY HELLO NONREST",str);
* }
*/
}
Я отделяя REST и NONREST элементов в отдельные Shrinkwrap архивов и развернуть его на сервер и тестирование. Проблема в том, что я не получаю покрытие jacoco для конечных точек REST. Если я раскомментирую testNonRESTSayHello(), он покажет покрытие для класса - только для метода: nonRESTSayHello(), хотя оба метода выполняются. Разница заключается в том, что остальная конечная точка передается с помощью Invocation.Builder из тестовой системы.
Любая идея?
Я уже пытался зацепить jacocoagent в JVM, но не похоже на работу. Но я не знаю, как это сделать с помощью tcp client/server. не могли бы вы мне помочь? – Tomin
Возможно, [эта тема] (https://groups.google.com/forum/#!topic/jacoco/LlqoJpuacak) может вам помочь. –
Не могли бы вы помочь мне настроить клиента, как в http://www.eclemma.org/jacoco/trunk/doc/examples/java/ExecutionDataClient.java. Где я должен реализовать этот фрагмент кода? – Tomin