java - tutorial - test spring rest controller
Las pruebas unitarias pasan a través de Maven, pero fallan a través de Cobertura: "Esperando un marco de mapa de pila en el objetivo de rama 65" (2)
Recientemente agregué el complemento Cobertura a mi proyecto Java / Spring-MVC. Lo extraño es que todas mis pruebas de unidad pasaron, y aún pasan cuando Maven hace su ejecución de prueba inicial, pero cuando Cobertura intenta ejecutar las pruebas, todas fallan con el mismo mensaje de error:
Expecting a stackmap frame at branch target 65 in method xxx.xxxx.xxxx.xxxx;)V at offset 40
No tengo idea de por qué sucede esto y ni siquiera sé cómo solucionarlo. He buscado en internet pero no he encontrado ningún problema similar. Yo uso JUnit y spring-test-mvc para pruebas.
¿Alguien ha visto esto antes?
Por supuesto, encuentro la respuesta justo después de hacer la pregunta, aunque antes he buscado por un tiempo ...
El problema es que Cobertura tiene problemas para trabajar con Java 1.7. Debe agregar la siguiente línea a su pom.xml:
<argLine>-XX:-UseSplitVerifier</argLine>
Eso va en el elemento de configuración. Aquí está la sección completa de Cobertura:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<argLine>-XX:-UseSplitVerifier</argLine>
<formats>
<format>xml</format>
</formats>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
Ahora todo funciona como se espera.
Se arregla usando un nuevo plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>xml</format>
</formats>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>