【问题标题】:Resolve TestNG Geb VerifyError Byte Code for InvokeSpecial解决 InvokeSpecial 的 TestNG Geb VerifyError 字节码
【发布时间】:2016-06-09 22:51:36
【问题描述】:

我正在尝试让功能测试套件与最新发布的 Geb 和 TestNG groovy/java 库一起使用。 JDK似乎存在问题,但我找不到任何解决此问题的信息。

测试的版本:

JDK 1.8.0_45 和 JDK 1.8.0_74 Groovy 2.4.6 geb-testng 0.13.1 测试 6.9.10

例外:

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException:无法完成 Gradle Test Executor 2 的执行。 在 org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 在 org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 在 org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 在 org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 在 com.sun.proxy.$Proxy2.stop(未知来源) 在 org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:116) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 在 org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 在 org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360) 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) 在 org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.VerifyError:错误的invokespecial指令:当前类不可分配给引用类。 异常详情: 地点: 测试用例/UserManagementAddUserTest.super$2$setGebConfScript(Ljava/lang/String;)V @6: invokespecial 原因: 字节码中存在错误 字节码: 0x0000000: b802 784d 2a2b b701 a32c 105e 0454 b1 在 java.lang.Class.getDeclaredMethods0(本机方法) 在 java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 在 java.lang.Class.privateGetPublicMethods(Class.java:2902) 在 java.lang.Class.getMethods(Class.java:1615) 在 org.testng.internal.TestNGClassFinder.(TestNGClassFinder.java:63) 在 org.testng.TestRunner.initMethods(TestRunner.java:424) 在 org.testng.TestRunner.init(TestRunner.java:247) 在 org.testng.TestRunner.init(TestRunner.java:217) 在 org.testng.TestRunner.(TestRunner.java:161) 在 org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:556) 在 org.testng.SuiteRunner.init(SuiteRunner.java:168) 在 org.testng.SuiteRunner.(SuiteRunner.java:117) 在 org.testng.TestNG.createSuiteRunner(TestNG.java:1319) 在 org.testng.TestNG.createSuiteRunners(TestNG.java:1306) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1160) 在 org.testng.TestNG.run(TestNG.java:1064) 在 org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:136) 在 org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:80) 在 org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:59) ... 22 更多

【问题讨论】:

    标签: java groovy testng functional-testing geb


    【解决方案1】:

    似乎必须使用升级的 JDK 1.8.0_74 重新编译 Geb 测试用例,次要版本 22、45 和 66 似乎不起作用。

    【讨论】:

    • 我以为你说你在问题中用 74 测试过它?
    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多