首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'ClassCastException类[B在试图生成spock报告时不能转换为类[C‘

'ClassCastException类[B在试图生成spock报告时不能转换为类[C‘
EN

Stack Overflow用户
提问于 2022-03-23 05:01:57
回答 1查看 180关注 0票数 1

当使用spock-reports生成单元测试报告时,我得到了一个ClassCastException:

代码语言:javascript
复制
class [B cannot be cast to class [C ([B and [C are in module java.base of loader 'bootstrap')

我使用Java 11和Spock 2.0进行单元测试,使用spock-reports (2.0.1-RC3)生成测试报告,这是由尽力而为(2.22.2)启动的。我还使用了spock协作者(1.2.2)扩展。

虽然成功地创建了单个测试报告,但当spock-reports试图生成聚合HTML (index.html)时,它将获得:

代码语言:javascript
复制
c.a.s.r.internal.HtmlReportAggregator    : Failed to create aggregated report

java.lang.ClassCastException: class [B cannot be cast to class [C ([B and [C are in module java.base of loader 'bootstrap')
    at groovy.json.internal.FastStringUtils$StringImplementation$1.toCharArray(FastStringUtils.java:88) ~[groovy-all-2.3.8.jar:2.3.8]
    at groovy.json.internal.FastStringUtils.toCharArray(FastStringUtils.java:175) ~[groovy-all-2.3.8.jar:2.3.8]
    at groovy.json.internal.BaseJsonParser.parse(BaseJsonParser.java:103) ~[groovy-all-2.3.8.jar:2.3.8]
    at groovy.json.JsonSlurper.parseText(JsonSlurper.java:208) ~[groovy-all-2.3.8.jar:2.3.8]
    at groovy.json.JsonSlurper$parseText.call(Unknown Source) ~[na:na]
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-3.0.9.jar:3.0.9]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[groovy-3.0.9.jar:3.0.9]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) ~[groovy-3.0.9.jar:3.0.9]
    at com.athaydes.spockframework.report.internal.ReportDataAggregator$_getAllAggregatedDataAndPersistLocalData_closure1.doCall(ReportDataAggregator.groovy:44) ~[spock-reports-2.3.0-groovy-3.0.jar:2.3.0-groovy-3.0]

我从堆栈跟踪中可以看出,Spock正在使用groovy 3.0.9,但是groovy-所有的2.3.8都是被拖进来的(由spock协作扩展)。

虽然我可以并将研究更新各种依赖版本,但在此期间,我还能做些什么来防止这个异常,从而生成index.html吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 05:01:57

系统性质

除了将其他依赖项更新到更晚的版本和对齐应该解决它的groovy版本之外,一个快速修复方法是声明一个系统属性

代码语言:javascript
复制
groovy.json.faststringutils.disable=true

我们可以通过在systemPropertyVaribles中将它添加为一个pom.xml配置条目来为我们的测试设置它:

代码语言:javascript
复制
<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <systemPropertyVariables>
      <groovy.json.faststringutils.disable>true</groovy.json.faststringutils.disable>
    </systemPropertyVariables>
    ...
  ...
</plugin>

这足以为我们成功地生成index.html,而我则研究了提升依赖版本。

依赖型版本

修复的另一种方法是将依赖项提升到以下版本(您使用的版本):

  • spock-reports: 2.3.0-groovy-3.0
  • spock-subjects-collaborators-extension: 2.0.0
  • maven-surefire-plugin: 3.0.0-M5

并添加一个直接的groovy -所有依赖项(测试范围,因为我们只在测试中使用groovy):

代码语言:javascript
复制
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>3.0.10</version>
    <scope>test</scope>
    <type>pom</type>
</dependency>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71582041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档