问题标签 [powermock]

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 投票
3 回答
14074 浏览

powermock - 如何使用 PowerMock 模拟非静态方法

我正在尝试模拟我的测试方法的内部方法调用

我的课看起来像这样

当我为 getStudent() 方法编写 junit 时,PowerMock 中有没有办法模拟该行

或者让 App 类在 junit 执行期间使用模拟 dao 对象,而不是连接到数据库的实际 dao 调用?

0 投票
1 回答
3982 浏览

junit - 私有设置器 NullPointer 上的 PowerMokito doNothing()

问题:尝试执行 PowerMockito.doNothing() 时引发 Nullpointer 异常。

我需要创建一个 partialMockObject 类,该类将返回一个私有方法值并且对另一个私有 setter 方法不执行任何操作。

如果我用 supress() 替换 doNothing() 但我想弄清楚这一点,我就能让它工作。

代码:

StackTrace:' org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.when(PowerMockitoStubberImpl. java:43) 在 org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.when(PowerMockitoStubberImpl.java:104)

0 投票
2 回答
1841 浏览

unit-testing - 使用 PowerMock 的 TestNG 数据提供程序

我正在使用 Mockito 和 TestNG 进行单元测试。我有要模拟的静态方法,我尝试过 PowerMock。不幸的是,我无法在 TestNG 中使用 DataProvider 和 PowerMock。

问题:在使用 PowerMock 时是否可以使用 TestNG 的 DataProvider?

0 投票
1 回答
517 浏览

powermock - 扩展方法的 PowerMokito 问题

问题:无法在扩展类的返回对象上存根方法。我只是在我试图存根的方法上获得空指针。我需要先对对象进行间谍活动吗?我也试过了,但没有用。

测试框架:PowerMockito 1.9 版 PowerMock 1.4.11 版 EasyMock 3.1 版

尝试测试的代码行。

String expected = methodFromExtendedClass_GetObject().getStringValueFromReturnObject();

测试代码

PowerMockito.stub(MemberModifier.method(ExtendedClassA.class, "methodFromExtendedClass_GetObject()")).toReturn(new testObject());

PowerMockito.stub(MemberModifier.method(testObject.class, "getStringValueFromReturnObject")).toReturn(testString);

0 投票
8 回答
135658 浏览

java - 使用 PowerMock 和 Mockito 模拟 Logger 和 LoggerFactory

我有以下要模拟的 Logger,但要验证日志条目被调用,而不是内容。

我想模拟用于 LoggerFactory.getLogger() 的任何类,但我不知道该怎么做。到目前为止,这是我最终的结果:

我想知道:

  1. 我可以模拟静态LoggerFactory.getLogger()以适用于任何课程吗?
  2. 我似乎只能在其中运行when(loggerMock.isDebugEnabled()).thenReturn(true);@Before因此我似乎无法更改每种方法的特征。有没有解决的办法?

编辑结果:

我以为我已经尝试过了,但没有奏效:

但是谢谢你,因为它确实有效。

但是,我尝试了无数种变化:

我无法让 loggerMock 在外部改变其行为,@Before但这仅发生在 Coburtura 上。使用 Clover,覆盖率显示为 100%,但无论哪种方式仍然存在问题。

我有这个简单的课程:

然后我有这个测试:

在三叶草中,我显示了 100% 的if(logger.isDebugEnabled()){块覆盖率。但是,如果我尝试验证loggerMock

我得到零互动。我也试过PowerMockito.verifyStatic();但@Before也有零相互作用。

这似乎很奇怪,Cobertura 显示if(logger.isDebugEnabled()){不是 100% 完成,而 Clover 确实如此,但两者都同意验证失败。

0 投票
1 回答
401 浏览

jsf - 使用 PowerMock 分析 JUnit 测试?

我们有几个非常慢的 JUnit 测试,它们大量使用模拟,包括静态函数的模拟。单项测试需要 20-30 秒,整个“mvn 测试”需要 25 分钟。

我想分析时间浪费在哪里,但在分析方面经验很少。

我假设依赖模拟对象的初始化需要很长时间。

两个问题:

1)如何快速获取数字,哪些方法浪费了时间?我不需要复杂的高级用户工具,只需要一些基本的东西来获取数字。(证明我们所做的那种嘲笑是邪恶的)

2) 你知道哪些设计缺陷会产生如此糟糕的时序吗?我们测试应该调用模拟服务的支持 JSF 的 bean。也许支持 bean 中可能存在一些输入验证或未重构的业务逻辑,但无法更改(请不要对此发表评论;-))

广告 2)例如,一项测试有大约 30 个(!)类要准备使用 @PrepareForTest 进行测试。这不可能是好事,但我无法解释为什么。

0 投票
3 回答
20728 浏览

java - PowerMock EasyMock 基础知识

这可能是 PowerMock/EasyMock 101 问题,我不知道为什么。我有一个带有方法的 C 类

在我对 testOuter() 方法的测试中,我想确保使用适当的参数调用 testInner。为此,我正在做这样的事情: [@RunWith(PowerMockRunner.class) @PrepareForTest(EmailUtil.class) 在类级别声明]

但我收到错误:

我用 EasyMock.IsA(String.class) 替换了实际参数,但仍然没有运气。我很确定我在这里做的事情基本上很愚蠢。有什么帮助吗?

0 投票
0 回答
76 浏览

json - 有没有人对 JsonpRequestBuilder 进行过 PowerMocked?

我需要PowerMock一个JsonpRequestBuilder. 我应该如何处理回调链?

先感谢您。

0 投票
1 回答
841 浏览

java - 使用 Ant 运行 Powermock 套件会导致 ClassCastExceptions

测试服在eclipse中运行得很好。但是,当我们尝试使用 ANT 运行套装时,它会引发以下错误:

正如网上许多人所建议的那样,我们试图忽略这些类,如下所示:

这并没有解决问题,我们开始收到此错误:

在对前面的示例进行了一段时间的尝试之后,似乎我们只是在将问题推到后面,以便稍后由其他代码处理。我们也一直在研究如何加载罐子,以便我们可以解决任何冲突,但到目前为止我们还没有运气。有人可以提供的任何帮助都会很棒。

0 投票
1 回答
1920 浏览

unit-testing - 如何使用 PowerMock / Mockito / EasyMock 使用模拟对象进行依赖注入?

我有一个AuthenticationManager.authenticate(username,password)在被测 SomeService 的 someMethod 中调用的方法。AuthenticationManager 被注入到 SomeService 中:

现在对于单元测试,我需要验证方法来假装它正常工作,在我的情况下什么都不做,所以我可以测试方法本身是否完成了预期的工作(根据单元测试原则在其他地方测试了身份验证,但是身份验证需要在该方法中被调用)所以我在想,我需要SomeService使用一个模拟,当被调用AuthenticationManager时,它只会返回并且什么都不做。authenticate()someMethod()

我如何使用 PowerMock(或 EasyMock / Mockito,它们是 PowerMock 的一部分)来做到这一点?