Testng, Emma, ​​Cobertura, охват и JDK 7 приводят к ClassFormatError и VerifyError

Я переключился на новейшую версию JDK 7, и у меня возникли проблемы с запуском модульного теста testng для байтового кода, который запускается с помощью инструмента покрытия emma. Ни один из моих тестовых примеров не запускается правильно, и для большинства из них я получаю такие ошибки.

 java.lang.ClassFormatError: Illegal local variable table length 10 in method measurement.meter.AbstractSerialPortMeter.(Lmeasurement/meter/SerialPort;)V at measurement.meter.Elc3133aTest.setUp(Elc3133aTest.java:42)

Я нашел здесь статью JSR 292 Goodness Fast Code Coverage Tool Less 10k , в котором говорится, что «JSR 292 представляет новую инструкцию invokedynamic байт-кода, но также несколько новых типов констант пула констант. Это означает, что большинство инструментов, которые анализируют байт-коды, такие как ASM, BCEL, findbugs или EMMA, должны быть обновлены до java 7 совместимы. "

Проверял домашнюю страницу Эммы, но похоже, что она давно не обновлялась.

Кто-нибудь решил подобную проблему?

Я также пробовал с Cobertura. Кажется, это работает немного лучше, но я получаю много исключений типа VerifyError .

java.lang.VerifyError: Expecting a stackmap frame at branch target 85 in method measurement.meter.AbstractSerialPortMeter.close()V at offset 26
at measurement.meter.AbstractSerialPortMeterTest.setUp(AbstractSerialPortMeterTest.java:27)

55
задан Jagger 10 January 2012 в 02:34
поделиться

1 ответ

Java 8 + эквивалентный из ответа Pedro Ballesteros:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.12.4</version>
  <configuration>
    <argLine>-noverify</argLine>
  </configuration>
</plugin>

(Настраивают номер версии для соответствия версии Безошибочных, которые Вы используете.)

0
ответ дан 7 November 2019 в 07:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: