问题标签 [mockstatic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
2682 浏览

mockito - Powermock 和 Powermockito 的区别

谁能详细说明PowerMock 和 PowerMockito。我什至没有获得 powermockito 的文档。我猜两者都用于以不同的方式模拟静态和私有方法。有什么相似之处和用法?哪一个更好?

0 投票
1 回答
212 浏览

java - 当类的静态方法返回相同的同一个类的对象时,PowerMock 抛出 initialzationError

一个initializationError被抛出。我正在使用 powermock 1.6.4 和 javassist-3.20.0。看来我不能在同一个班级(同时)上模拟和模拟静态。

0 投票
1 回答
1028 浏览

java - IllegalStateException 抱怨 PowerMockRule 由 powermock 类加载器而不是系统类加载器加载

Maven 依赖项/属性按以下顺序排列:

  1. powermock 版本 1.6.6
  2. easymock 3.4 版
  3. 简易模拟
  4. powermock-module-junit4
  5. powermock-api-easymock
  6. powermock-module-junit4-rule-agent(删除它会导致构造函数问题)
  7. powermock-module-junit4-rule(删除这个依赖没有效果)
  8. powermock-classloading-xstream

运行时错误:

PowerMock 正在咬自己的尾巴。它想使用自己的类加载器,但 JVM 说 PowerMockRule 必须由系统加载。

我能做些什么来解决这个问题?

0 投票
1 回答
411 浏览

uuid - UUID.getRandom 的 Powermock、mockStatic 在测试类中有效,但在测试类中无效

奇怪的案例:使用 Powermock 模拟出 UUID.getRandom()。这在 JUnit 测试类中有效,但是当被测类(过滤器,如果这很重要)调用 UUID.getRandom 时,会生成一个唯一的 UUID。

简单的测试用例

正在测试的简单类

很简单的东西,以前做过这样的模拟,只是不知道为什么这个案例不起作用。

使用 Powermock 1.5 版。

0 投票
2 回答
1102 浏览

java - SQLException:当 PowerMockito mockStatic DriverManager.class 时“找不到合适的驱动程序”

我正在尝试 mockStatic DriverManager.class 并获取 mockConnection 但是一个真正的静态 void 方法被称为 getConnection 。

测试类:

Pom.xml

尝试执行 PowerMockito.doReturn(connection).when(DriverManager.class, "getConnection", anyString(), anyString(), anyString()) 时遇到的异常:

我做错了什么?如何正确模拟 DriverManager.class?PS。当我查看 org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.when(PowerMockitoStubberImpl.java:110) 我看到它总是调用“Whitebox.invokeMethod(classMock, methodToExpect, parameters);” 因此,我不明白它一般是如何工作的。

0 投票
0 回答
287 浏览

mockito - 使用 PowerMock 2.0.2 在 System 类上的 VerifyStatic 失败

将 powermock 版本从 1X 升级到 2X 后,对 System 类的 verifystatic 的引用失败

以下是我当前的配置 mockito-core - 2.27.0 powermock-api-mockito2 - 2.0.2 powermock-api-support - 2.0.2 powermock-module-junit4 - 2.0.2

下面的代码在 powermock 1X 上运行良好

我进行了以下更改以使其与 powermock2.0.2 一起使用

在运行测试时低于异常。

请帮助找到此异常的修复程序。

0 投票
1 回答
394 浏览

unit-testing - ResourceBundle.getBundle 返回实际对象,尽管 mockStatic 和 when() 另有指示

我正在对现有类创建测试。它们中的许多具有定义为私有 final 字段的资源包,该字段在通过 new 创建对象时被初始化。我声明了一个模拟的 ResourceBundle,使用 PowerMock 的 mockStatic 方法启用静态模拟,并模拟 getBundle 方法以返回我的模拟 ResourceBundle。但是,当构造函数运行代码来初始化字段时,它只是创建新的资源包而不是使用模拟的资源包。我觉得我错过了一个小细节,但我不知道它可能是什么。这一切都是一个问题的原因是:当我在本地运行测试时,它会毫无问题地创建 ResourceBundle 对象。但是当通过我们的构建软件(UCBuild)运行测试时,它会抛出“找不到资源”异常并且测试,

当我在调试中运行测试并在构造函数上设置方法断点时,我可以看到“字符串”对象是使用实际资源包创建的,而不是模拟的。我无法为我的生活找出原因。

我尝试在不初始化的情况下声明该字段,然后使用 class.getDeclaredField() 和 Field.setAccesible() 将资源包设置为指向我模拟的资源包,但是如果我运行重新运行的代码,这当然会被覆盖初始化字段。

测试 Worker.java 的 WorkerTest 类:

工人.java:

提前致谢

0 投票
1 回答
85 浏览

junit - 使用 PowerMockito 的 Junit 规则:ClassNotPreparedException

我正在使用 PowerMockito 测试一些静态类,有时测试会失败,为了克服这个问题,我创建了一个自定义的 JUnit 规则来重新运行失败测试。该规则工作正常,但每当重新执行测试时,它再次失败,但这次是在mockStatic(StaticClass.class)抛出异常的指令处org.powermock.api.mockito.ClassNotPreparedException。为什么 @PrepareForTest 仅在第一次运行时执行,而不是在重新运行测试时执行。

0 投票
1 回答
328 浏览

cucumber - Cucumber testng 与 PowerMockTestCase 模拟静态类

我正在使用黄瓜 BDD、testng、java 来编写一些 BDD 测试。我想模拟静态类以编写我的测试。但是,当我编写此测试运行程序时,它无法初始化 BDD 场景。

完整示例(注意注释行PrepareForTest):

如果我在测试中启用注释,则上述测试无法加载 BDD 场景dataProvider 。PrepareForTest但是,使用dataProvider的其他测试在两种情况下都可以正常工作(启用或禁用PrepareForTest

错误:

这样做的副作用是,我无法在编写 BDD 时模拟 util 类的静态方法。我是黄瓜 BDD 的新手。任何帮助/指针表示赞赏。

0 投票
0 回答
453 浏览

powermockito - 将 jdk8 升级到 JDK11 时 PowerMockito.mockStatic() 处的 org.powermock.api.mockito.ClassNotPreparedException

我在用PowerMockito.mockStatic(LogServiceImpl)SPOCK 框架编写的单元测试代码中使用。即使我@PrepareForTest([LogServiceImpl])在课堂上宣布,我也得到了org.powermock.api.mockito.ClassNotPreparedException

早些时候它在 JDK8 中运行良好,但是当我升级到打开 jdk 11 时面临这个问题。

这是 build.gradle 文件中使用的 powermock 版本

我尝试了中给出的步骤

https://github.com/powermock/powermock/issues/933

https://github.com/powermock/powermock/issues/901

仍然无法解决它..请帮助我