首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java 17中Mockito.spy on Graphics2D

如何在Java 17中Mockito.spy on Graphics2D
EN

Stack Overflow用户
提问于 2022-06-09 12:22:16
回答 1查看 156关注 0票数 2

我有一个maven项目,应该在java-8,java-11上运行。我想增加对java-17的支持,并且我在测试方面有一些问题。

测试的简化版本如下所示:

代码语言:javascript
复制
@Test
public void testGraphics() throws Exception {
  BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
  Graphics2D graphics = Mockito.spy(bi.createGraphics());

  //my code for testing
  graphics.getColor();

  Mockito.verify(graphics, times(1)).getColor();
}

我执行测试时:

代码语言:javascript
复制
mvn clean compile test

这在java 8和java 11上很好。但是,在java 17中,我得到:

代码语言:javascript
复制
java.lang.IllegalAccessException: class org.mockito.internal.util.reflection.ReflectionMemberAccessor cannot access class sun.java2d.SunGraphics2D (in module java.desktop) because module java.desktop does not export sun.java2d to unnamed module @62bd2070

可以通过在test命令中添加--add-opens=java.desktop/sun.java2d=ALL-UNNAMED来解决这个问题:

代码语言:javascript
复制
mvn clean compile test -DargLine=--add-opens=java.desktop/sun.java2d=ALL-UNNAMED

但是,该命令不能在java 8上工作,因为它不识别--add-opens选项:

代码语言:javascript
复制
Unrecognized option: --add-opens=java.desktop/sun.java2d=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

我的持续集成是在不同环境(不同的java版本、不同的数据库等)中运行相同测试的矩阵,我希望避免根据环境的不同而有不同的maven选项。

是否有另一种不需要在不同java版本中更改maven参数的方法来运行此测试?我不能使用Mockito.mock,因为我的代码与图形对象交互,并取决于结果(而且有许多调用,因此暂时无法对每个调用进行模拟)。以下是我考虑过但却找不到办法去做的选择:

sun.java2d.SunGraphics2D

  • modify

  • 使用了不同的Graphics2D实现,而不是Graphics2D pom.xml,它有条件地提供了一些选项,可以根据java version

  • force surefire来忽略未识别的选项(

)。

为了记录在案,我使用的是junit 4.12和mockito 4.6.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 12:57:15

其中一种方法是提供一个让java忽略未被识别的选项的选项。可以使用以下命令完成此操作:

代码语言:javascript
复制
mvn clean compile test -DargLine="--add-opens=java.desktop/sun.java2d=ALL-UNNAMED -XX:+IgnoreUnrecognizedVMOptions"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72560187

复制
相关文章

相似问题

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