试图将我的项目从Java 11更新到Java 17,在一个特定测试中,Mockito出现了一个意外错误。
mock(java.util.Random.class);
投掷
Feb 04, 2022 3:07:01 PM com.google.inject.internal.MessageProcessor visit
INFO: An exception was caught and reported. Message: java.lang.IllegalAccessException: class
net.bytebuddy.description.annotation.AnnotationDescription$ForLoadedAnnotation cannot access interface
jdk.internal.util.random.RandomSupport$RandomGeneratorProperties (in module java.base)
because module java.base does not export jdk.internal.util.random to unnamed module @2f54a33d
org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class java.util.Random.
Mockito can only mock non-private & non-final classes.
If you're not sure why you're getting this error, please report to the mailing list.
Java : 17
JVM vendor name : Oracle Corporation
JVM vendor version : 17.0.2+8-86
JVM name : OpenJDK 64-Bit Server VM
JVM version : 17.0.2+8-86
JVM info : mixed mode, sharing
OS name : Mac OS X
OS version : 12.1
不知道为什么Mockito这次考试不及格。
将mokito升级到4.4.0它起作用了
这里的问题是mockito(通过ByteBuddy)试图在运行时使用不可访问的类型(通过反射)。从Java 9开始,除非明确导出/打开模块,否则并非所有模块都可以访问。
由于这是一个运行时问题,您可以添加JVM arg/CLI选项来访问此类型。
根据此处的Oracle指南,-add打开后执行以下操作。
如果必须允许类路径上的代码进行深度反射以访问非公共成员,那么请使用--add opens运行时选项。
如果还想导出编译时可用的内部类型,可以使用“添加导出”。
要解决您的特定问题;使用以下内容。
添加打开java。基本/jdk。内部的util。随机=全部未命名
。
ALL-UNNAMED
表示指定的包在整个代码库中可用。
然而,嘲笑不属于你的类型不是一个好的做法。也许,如果有替代方案,你可以简化它。
这个特殊问题也可以通过以下方式解决:
mock(SecureRandom.class, withSettings().withoutAnnotations())
我是Mockito的新手,正在尝试模拟服务方法。但是,Mockito无法正确模拟函数。 以下是部分测试代码: 课程: 我期待返回一个非空列表。但是,它返回了一个空列表。有人能帮忙吗?
我对莫基托有疑问。我想测试这个简单的类: 我写了这个简单的测试: 此测试运行时没有错误。我等待它没有编译,因为没有任何对userService方法的调用…
我目前正在做一个小项目,作为Java测试课程的实习,我们试图看看mocking是如何工作的。 我们的目标是看到我们可以忽略我们所嘲笑的类中的错误。 正如您在Collaborateur中看到的,缺少一个“;”在System.Out之后,exercice的目标是表明嘲笑这个类可以让我们忽略这个错误。我的一些同事使用Eclipse时,使用“以JUnit形式运行”功能没有问题。 在Intellij中,我没
我提到了这个答案,我该如何模拟java。时间本地日期。now()关于如何模拟我的LocalDateTime。now()调用。我基本上遵循了所有步骤,但只使用了LocalDateTime而不是LocalDate。 我的代码的功能是这样的,它应该只在一小时的第15或45分钟运行。因此,我将LOCAL\u DATE\u TIME静态变量设置为: 然后在我的@Before测试方法中,我有以下内容: 这是2
问题内容: 我在带有打字稿的React Router v5.1.2中使用UseHistory挂钩吗?运行单元测试时,我遇到了问题。 TypeError:无法读取未定义的属性“ history”。 我也尝试使用,但仍然无法正常工作。 问题答案: 浅化使用的反应功能组件时,我需要相同的内容。 在我的测试文件中解决了以下模拟问题: