问题标签 [powermockito]

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 投票
1 回答
1344 浏览

java - 如何模拟单例工厂的对象创建?

我试图遵循的例子:

我试图单元测试的工厂类:

我的测试如下。工厂不退回模型。我认为这是因为工厂是一个单例,它被实例化并加载了一个私有静态加载器类。那么,有没有办法模拟这个对象创建场景,还是我应该放弃将它变成真正的单元测试?

0 投票
1 回答
1696 浏览

junit - 无法使用 PowerMockito 部分模拟静态方法

我要在 Util 类中模拟一个名为toBeMockedFunction的静态函数。此方法是从toBeUnitTested调用的,它是一个公共静态 void 方法。我想对 BeMocked 函数什么都不做。我尝试了许多部分模拟和存根的方法(发布了这样的 2 的片段)并且无法成功。

请提出我做错了什么。

下面是我的junit类

  1. 方法2

    /li>
0 投票
1 回答
49 浏览

mockito - 如何模拟类对象或如何模拟私有泛型方法

我在下面有一个私有的通用方法

如何模拟上述方法

0 投票
1 回答
1577 浏览

junit - 你如何绕过静态方法调用?

我有这行干扰单元测试:

如果它不是静态的,我可以模拟 OtherClass 然后这样做:

如果调用它会出错,这一事实使我尝试使用 powermockito 是徒劳的。

我不确定我该怎么做。我要做的就是跳过这一行(这是一个 if 检查)并继续,就好像它返回了 true。做这个的最好方式是什么?

0 投票
2 回答
816 浏览

unit-testing - 没有 setPk() 时模拟 getPk() 函数

我有以下代码(Facade 的一小部分)要在单元测试中覆盖。我正在使用 Mockito 来模拟属于服务层的函数。

我一直在通过调用要测试的函数并提供具有设定值的输入来编写测试用例,以便可以实现代码的最大覆盖率(如果这不是它应该完成的方式,请纠正我)。

我的问题是我有entryModel.getPk()没有设置器的功能,例如。entryModel.setPk()我可以打电话。结果,它将在此行中引发空指针异常。我不想嘲笑这个entryModel对象。怎么办?

Pk就像那个模型类的 PrimaryKey。整个代码是在 Hybris 平台上编写的)

0 投票
0 回答
993 浏览

java - 调用 PowerMockito.mockStatic 时出现 AbstractMethodError

我正在尝试使用 PowerMockito 来模拟静态调用。但是,当我尝试这样做时,PowerMockito.mockStatic调用会引发 AbstractMethodError:

由于这是我在单元测试方法中做的第一件事,它实际上还没有与我自己的任何代码进行交互。

我试图模拟的类不在 Spring 安全库中:SecurityContextHolder.

我有以下 Maven 依赖项:

(在这个测试中没有使用 EasyMock 的东西,但我将它们包括在内以防出现某种冲突。我已经尝试了 mockito-all 和 mockito-core,在行为上没有明显的差异。删除直接的 mockito依赖(mockito-all 或 mockit-core)也没有区别。)

我究竟做错了什么?

0 投票
1 回答
94 浏览

spring - 模拟@Autowired服务的构造函数(被测系统)

我必须模拟在受控服务的构造函数中创建的 jerseyclient。主题服务是通过 Spring 的 @Autowired 注入的被测系统。

在服务的构造函数中编写了 client=client.create() 方法。我们无法更改此代码(尽管这是代码异味)。我想模拟球衣客户端,但它在服务的构造函数中。我无法嘲笑这个

0 投票
1 回答
52 浏览

mocking - 抑制或白盒问题

我有一个使用服务器的私有静态最终记录器。我想禁止 Logger 方法调试,或禁止与变量的任何和所有交互。我在 LoggingClass 中声明记录器

用于调试的 javadoc 是:

在我尝试过的测试课中:

问题:抛出太多方法异常

===========

问题:抛出 Whitebox 找不到实例字段 LOGGER。

任何帮助将不胜感激

0 投票
1 回答
1254 浏览

java - 是否可以仅在第一次出现时使用“PowerMockito.whenNew()”?

我即将建立一个 JSON 对象并想测试结果。我正在调用公共方法。有几个私有方法并进行了递归调用。一开始我有这个:

这是我的“根”对象。不幸的是,它不是作为参数等给出的,而是使用构造函数创建的,如图所示。在 recursvie 调用中,此构造函数被多次调用以构建结构。我需要的是测试中断言的根对象。

所以我试图以某种方式得到它并在这里尝试这种方法......以下代码:

这将允许我在执行我的断言后拥有构建的根 json 对象。但是我遇到了 stackoverflow 异常。为什么?因为递归调用的构造函数现在通过我的根对象调用构造函数。

所以底线,我在这里需要什么:我想说“whenNew(JSONObject.class,times(1))”或类似的东西。这样只有第一个构造函数调用被嘲笑,而以下不再被嘲笑。我认为这应该是可能的,但找不到实现这一目标的方法:(

感谢您的帮助,伙计们!

0 投票
1 回答
2073 浏览

java - Mocking Static Methods and AEM Mocks

I'm using maven to build and test my code before installing to an instance of AEM 5.6.1. I've written unit tests that benefit from aem mocks using an implementation by wcm.io and other unit tests that require mocking static methods using powermockito.

Here are my maven dependencies for the aem-context, sling mocks and powermock.

In my class I'm setting up the rule for the aem context and preparing some static classes for mocking:

When I run mvn test via the command line I received the following exception:

If I don't prepare any static classes for the test (remove the @PrepareForTest annotation), the test runs just fine. As soon as I add the annotation (even if empty), I get the issue. I'm left with the following questions:

  1. Is there anything in my setup I can change to get this to work?
  2. Does the aem context work with static mocking at all? (potentially with another library)