当前位置: 首页 > 知识库问答 >
问题:

解析InvokeSpecial的TestNG Geb VerifyError字节码

邓浩漫
2023-03-14

我正在尝试使用最新发布的Geb和TestNG groovy/java库获得一个功能测试套件。JDK似乎有问题,但我找不到任何关于解决这个问题的信息。

测试版本:

JDK 1.8.0_45 and JDK 1.8.0_74
Groovy 2.4.6
geb-testng 0.13.1
testng 6.9.10

例外情况:

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 2.
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy2.stop(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:116)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.VerifyError: Bad invokespecial instruction: current class isn't assignable to reference class.
Exception Details:
  Location:
    Testcases/UserManagementAddUserTest.super$2$setGebConfScript(Ljava/lang/String;)V @6: invokespecial
  Reason:
    Error exists in the bytecode
  Bytecode:
    0x0000000: b802 784d 2a2b b701 a32c 105e 0454 b1  

    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetPublicMethods(Class.java:2902)
    at java.lang.Class.getMethods(Class.java:1615)
    at org.testng.internal.TestNGClassFinder.(TestNGClassFinder.java:63)
    at org.testng.TestRunner.initMethods(TestRunner.java:424)
    at org.testng.TestRunner.init(TestRunner.java:247)
    at org.testng.TestRunner.init(TestRunner.java:217)
    at org.testng.TestRunner.(TestRunner.java:161)
    at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:556)
    at org.testng.SuiteRunner.init(SuiteRunner.java:168)
    at org.testng.SuiteRunner.(SuiteRunner.java:117)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1319)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1306)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1160)
    at org.testng.TestNG.run(TestNG.java:1064)
    at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:136)
    at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:80)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:59)
    ... 22 more

共有1个答案

雍骏俊
2023-03-14

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

 类似资料:
  • 问题内容: 我正处于从文件中读取某些数据作为字节流的过程中,并且刚刚遇到了一些不确定如何处理的unicode字符串。 每个字符使用两个字节,只有第一个看起来包含实际数据,因此,例如,字符串“ trust”在文件中的存储方式为: 通常,我只使用正则表达式将零替换为零,从而删除空格。但是,文件中单词之间的空格是使用来实现的,因此尝试执行一个简单的String’replaceAll’会使它有点混乱。 我

  • 问题内容: 是否可以从由类源代码形成的字节码中提取出一个类名? 情况是这样的:我从某个地方远程获得了一个字节码类,不管它来自何处。为了使用类加载器有效地加载该类,我还需要具有类名称…对吗? 问题答案: 如果只需要类名,则可能自己解析类文件的开头,而不是仅仅为此目的而添加用于处理类代码的第三方库。您只需要常量池中的类和字符串,跳过访问标志,然后将/替换为即可。在班级名称中。如果有字节数组,则可以使用

  • 为什么第一个成功而第二个失败?人们可能期望它们产生相同的输出。

  • 我刚切换到Android Studio 2.1,在尝试编译之前运行的应用程序时出现了以下错误: 我已经更新了主项目的gradle。生成文件以强制生成Java 1.7代码: 我还更新了gradle模块。按如下方式构建以设置java版本: 正在使用Maven构建子模块。在pom.xml文件中,我还尝试强制生成1.7代码。 我知道我正在使用一个组装工件,它包含了从属模块,但我没有更改任何从属模块,并且上

  • 问题内容: 我正在用Java解析具有以下规范的字节数组: 今天,我没有看到任何解决方案来解析此数组以获取具有正确类型的7变量。您是否确认或者我是否缺少Java中的魔术函数之类的东西,该函数允许在字节数组中查找字符串“限制”(我看不出如何将Minimum value与相关的ASCII字符区分开)。 两个字符串之间是否有关于特殊字符的“约定”? 问题答案: 好吧,您知道名字从字节9开始,姓氏在字节结尾

  • 我在Java中有以下问题。我使用的加密算法可以产生负字节作为结果,出于我的目的,我必须能够用二进制处理它们。对于负字节,8中的第一个或最高有效位为1。当我稍后尝试将二进制字符串转换回字节时,我得到了一个,因为我的字节太长了。我可以告诉Java将其视为无符号字节,并以负字节结束吗?到目前为止,我的代码是: 在Java中,有没有更好的方法从二进制文件解析有符号字节?提前谢谢!