java11使用powermock 测试私有静态方法报警告或错误的解决方案参考

在OSX环境下,使用Java 11、IntelliJ IDEA 2022.2.5、Maven和PowerMock进行单元测试时,遇到使用Whitebox.invokeMethod测试私有静态方法出现警告和错误的问题。当IDE运行测试能通过但有警告,而通过Maven测试则报错。解决方法是将运行环境改为Java 11,并在pom.xml中调整相关参数。由于Java 17不再支持--illegal-access=permit参数,所以切换到Java 11可以解决问题。此外,Gradle也有类似解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 环境: osx+java11+idea2022.2.5+maven+powermock+junit5
  2. 问题: 项目环境java11,运行环境java17:
    powermock包使用Whitebox.invokeMethod测试调用私有/静态方法时:直接ide运行测试通过,但有警告提示, mvn clean test测试不通过并报错
  3. 解决办法: 运行环境也从java17改java11,同时修改pom.xml相关参数如下:(世界清净了: 测试ok,消除警告和报错)
  4. 其它:
    java17提示不再支持–illegal-access=permit运行参数,类似绕过安全机制方法不灵,目前本机验证改java11没问题
    另外github上有gradle相关方案参考,本质就是设置好这一串参数
    BTW: 不同jdk 通过zshrc配置alias切换不成功,请尝试去掉PATH中JAVA_HOME/bin
<groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <argLine>
                        --illegal-access=permit
                        --illegal-access=debug
                        --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED
                        --add-opens
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值