问题标签 [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.
mockito - Powermock 和 Powermockito 的区别
谁能详细说明PowerMock 和 PowerMockito。我什至没有获得 powermockito 的文档。我猜两者都用于以不同的方式模拟静态和私有方法。有什么相似之处和用法?哪一个更好?
java - 当类的静态方法返回相同的同一个类的对象时,PowerMock 抛出 initialzationError
一个initializationError
被抛出。我正在使用 powermock 1.6.4 和 javassist-3.20.0。看来我不能在同一个班级(同时)上模拟和模拟静态。
java - IllegalStateException 抱怨 PowerMockRule 由 powermock 类加载器而不是系统类加载器加载
Maven 依赖项/属性按以下顺序排列:
- powermock 版本 1.6.6
- easymock 3.4 版
- 简易模拟
- powermock-module-junit4
- powermock-api-easymock
- powermock-module-junit4-rule-agent(删除它会导致构造函数问题)
- powermock-module-junit4-rule(删除这个依赖没有效果)
- powermock-classloading-xstream
运行时错误:
PowerMock 正在咬自己的尾巴。它想使用自己的类加载器,但 JVM 说 PowerMockRule 必须由系统加载。
我能做些什么来解决这个问题?
uuid - UUID.getRandom 的 Powermock、mockStatic 在测试类中有效,但在测试类中无效
奇怪的案例:使用 Powermock 模拟出 UUID.getRandom()。这在 JUnit 测试类中有效,但是当被测类(过滤器,如果这很重要)调用 UUID.getRandom 时,会生成一个唯一的 UUID。
简单的测试用例
正在测试的简单类
很简单的东西,以前做过这样的模拟,只是不知道为什么这个案例不起作用。
使用 Powermock 1.5 版。
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);” 因此,我不明白它一般是如何工作的。
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 一起使用
在运行测试时低于异常。
请帮助找到此异常的修复程序。
unit-testing - ResourceBundle.getBundle 返回实际对象,尽管 mockStatic 和 when() 另有指示
我正在对现有类创建测试。它们中的许多具有定义为私有 final 字段的资源包,该字段在通过 new 创建对象时被初始化。我声明了一个模拟的 ResourceBundle,使用 PowerMock 的 mockStatic 方法启用静态模拟,并模拟 getBundle 方法以返回我的模拟 ResourceBundle。但是,当构造函数运行代码来初始化字段时,它只是创建新的资源包而不是使用模拟的资源包。我觉得我错过了一个小细节,但我不知道它可能是什么。这一切都是一个问题的原因是:当我在本地运行测试时,它会毫无问题地创建 ResourceBundle 对象。但是当通过我们的构建软件(UCBuild)运行测试时,它会抛出“找不到资源”异常并且测试,
当我在调试中运行测试并在构造函数上设置方法断点时,我可以看到“字符串”对象是使用实际资源包创建的,而不是模拟的。我无法为我的生活找出原因。
我尝试在不初始化的情况下声明该字段,然后使用 class.getDeclaredField() 和 Field.setAccesible() 将资源包设置为指向我模拟的资源包,但是如果我运行重新运行的代码,这当然会被覆盖初始化字段。
测试 Worker.java 的 WorkerTest 类:
工人.java:
提前致谢
junit - 使用 PowerMockito 的 Junit 规则:ClassNotPreparedException
我正在使用 PowerMockito 测试一些静态类,有时测试会失败,为了克服这个问题,我创建了一个自定义的 JUnit 规则来重新运行失败测试。该规则工作正常,但每当重新执行测试时,它再次失败,但这次是在mockStatic(StaticClass.class)
抛出异常的指令处org.powermock.api.mockito.ClassNotPreparedException
。为什么 @PrepareForTest 仅在第一次运行时执行,而不是在重新运行测试时执行。
cucumber - Cucumber testng 与 PowerMockTestCase 模拟静态类
我正在使用黄瓜 BDD、testng、java 来编写一些 BDD 测试。我想模拟静态类以编写我的测试。但是,当我编写此测试运行程序时,它无法初始化 BDD 场景。
完整示例(注意注释行PrepareForTest
):
如果我在测试中启用注释,则上述测试无法加载 BDD 场景dataProvider 。PrepareForTest
但是,使用dataProvider的其他测试在两种情况下都可以正常工作(启用或禁用PrepareForTest
)
错误:
这样做的副作用是,我无法在编写 BDD 时模拟 util 类的静态方法。我是黄瓜 BDD 的新手。任何帮助/指针表示赞赏。
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
仍然无法解决它..请帮助我