Cómo obtener la cobertura completa del código en un proyecto de módulos múltiples de Maven

Imagine un proyecto Maven de varios módulos, como el siguiente:

parent
  +- core
  +- main

maindepende del coremódulo

Ahora escribo una clase CoreClassen core, con 2 métodos: method1()y method2(). En las corepruebas, escribo una clase de prueba que solo probará CoreClass.method1().

Si ejecuto una herramienta de cobertura (en mi caso Cobertura, usando mvn sonar:sonar), veré que obtengo el 50% de la cobertura de prueba CoreClass(si imaginamos que ambos métodos tienen la misma duración).

Hasta ahora, todo está bien.

Ahora, en el mainproyecto, escribo una clase de prueba que probará el CoreClass.method2(). Por lo tanto , normalmente , yo esperaría a tener el 100% de cobertura de línea en CoreClasscuando corro un análisis de todo el proyecto.

Sin embargo, todavía obtengo mi 50% .

Entiendo que este es un comportamiento integral. De hecho, Cobertura instrumentará CoreClasspara el análisis de cobertura solo durante la ejecución de las pruebas en el coremódulo , y no en el main. Eso explica por qué todavía tengo el 50% de cobertura de código.

Sin embargo, mi pregunta es saber si hay una manera de obtener la cobertura de código real de CoreClasscuando estoy ejecutando las pruebas en todos mis módulos.

¡Gracias!

PD: Sé que en un mundo perfecto, no es asunto del mainmódulo probar las coreclases. Pero como sabrán, no estamos en un mundo perfecto: o)

Información técnica: Java 1.6, JUnit 4.8.1, Maven 2.0.9 (se actualizará a 2.2.1 pronto, pero no creo que realmente importe), Sonar 2.8

Respuesta 1

Use jacoco y sonar y obtenga un único resultado de archivo jacoco.exec para todos los módulos. Sonar usará este archivo e informará la cobertura correcta para cada módulo. Lo he usado para un proyecto de varios módulos con éxito con Sonar

Respuesta: 2

¿Funcionará el próximo código como se esperaba? Cursor c = db.query (tableName, requiredColumns, condition, conditionParams, null, null, sortOrder); while (c.moveToNext ()) {// hacer cosas con filas} ...

¿Cuál es la combinación adecuada de Mockito para el segundo parámetro en este método? Firma: List <Something> findSomething (Object o, Integer ... ids); Probé los siguientes matizadores: cuando (...

Tengo una aplicación Java SE 8 Spring 4.1.6-RELEASE, donde estoy implementando la interfaz org.springframework.jdbc.core.RowMapper <T>, y tenía algunas preguntas sobre java.sql.ResultSet ...

Estoy trabajando con el servidor DBeaver Oracle. Recibo un error periódico sobre guardar espacio de trabajo. Intenté google para encontrar una solución, pero todo lo que encontré fue explicaciones relacionadas con metadatos. Soy nuevo en DBeaver, así que ...