unitarias pruebas plugin java code-coverage cobertura

java - pruebas - Excluir métodos de cobertura de código con Cobertura



cobertura plugin (4)

Actualmente, Cobertura no ofrece esta característica, y Emma tampoco (que usamos), aunque figura como una próxima mejora, aunque creo que es una extensión de las reglas de exclusión y no una anotación.

Sería útil para cubrir los rincones inaccesibles limpiamente para que pueda luchar por el 100% sin ser ridículo.

Creo que las anotaciones probablemente serían una forma más amigable de hacerlo, pero deberían nombrarse de manera bastante explícita y basarse en una lista de escenarios aceptables, ya que, de lo contrario, algo como ''@ExcludeFromCoverage'' se agregaría generosamente.

¿Hay alguna manera de excluir el código de la inclusión en los informes de cobertura de Cobertura? Tenemos algunos métodos que no deberían incluirse en el informe de cobertura y, por lo tanto, no reducir los números de cobertura.

Sé que Clover tiene esa funcionalidad, pero no he encontrado nada similar para Cobertura.


Esto ha estado rompiéndome la cabeza por un tiempo.

Mi problema fue que tenía la configuración del complemento de cobertura maven en la sección de informes en lugar de la sección de compilación.

La configuración de instrumentación, y por lo tanto la exclusión de clases o paquetes, no se aplicará si no lo configura en la sección de compilación, así que ten cuidado con esto.


Puede excluir clases de la instrumentación. Entonces no deberían aparecer en los informes. Ver declaraciones excluidas a continuación.

También puede ignorar las llamadas a algunos métodos. Ver la declaración de ignorar a continuación.

Si está utilizando maven, consulte el manual de maven plugin .

<configuration> <instrumentation> <ignores> <ignore>com.example.boringcode.*</ignore> </ignores> <excludes> <exclude>com/example/dullcode/**/*.class</exclude> <exclude>com/example/**/*Test.class</exclude> </excludes> </instrumentation> </configuration>

Y para la hormiga, mira this .

<cobertura-instrument todir="${instrumented.dir}"> <ignore regex="org.apache.log4j.*" /> <fileset dir="${classes.dir}"> <include name="**/*.class" /> <exclude name="**/*Test.class" /> </fileset> <fileset dir="${jars.dir}"> <include name="my-simple-plugin.jar" /> </fileset> </cobertura-instrument>


Recuerde excluir las clases internas también.

<exclude>path/to/class/MyClass*.class</exclude>

¡Me llevó años darme cuenta de que me faltaba un asterisco!