Я переключился на новейший JDK 7, и у меня возникают проблемы с запуском testng unit test по байтовому коду, который искажается с помощью инструмента покрытия emma. Ни один из моих тестовых примеров не работает правильно, и для большинства из них я получаю такие ошибки.
java.lang.ClassFormatError: Illegal local variable table length 10 in method measurement.meter.AbstractSerialPortMeter.<init>(Lmeasurement/meter/SerialPort;)V at measurement.meter.Elc3133aTest.setUp(Elc3133aTest.java:42)
Я нашел статью здесь JSR 292 Инструмент покрытия кода хорошего качества Fast Less менее 10k, в котором говорится, что "JSR 292 вводит новую инструкцию байт-кода invokedynamic, но также имеет несколько новых констант пула констант. Это означает, что большинство инструментов, которые анализируют байт-коды, такие как ASM, BCEL, findbugs или EMMA, должны быть обновлены, чтобы быть java 7 совместимый".
Проверьте домашнюю страницу Emma, но похоже, что она не обновлялась долгое время.
Кто-нибудь решил аналогичную проблему?
Я тоже пытался с Кобертурой. Он выглядит немного лучше, но я получаю много исключений типа 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)