当前位置: 首页 > 知识库问答 >
问题:

Power Mockito无法模拟构造函数

尹赞
2023-03-14

为了测试一些遗留代码,我必须使用powermockito。原因是遗留代码没有使用依赖项注入,并且由于某些原因,我们现在无法重构代码。我们正在系统中使用ANT运行testng。我已经配置了构建。xml使用power mock和power mock testng库。我想用powermockito模拟一个构造函数,下面是示例代码。

public class Something {
     private String arg = null;

     public Something() {

     }

     public Something(String _arg) {
        arg = _arg;
     }

     public String doSomething() {
         return arg;
     }
 }

public class Helper {
     public Something doSomething(String arg) {
         return new Something();
     }
}

@PrepareEverythingForTest
class TestSC {
     @Test
     public void testHelper() throws Exception {
         Something mockSomething = PowerMockito.mock(Something.class);
         PowerMockito.whenNew(Something.class).withNoArguments().thenReturn(mockSomething);

         Helper helper = new Helper();
         Something test = helper.doSomething("arg");
         Assert.assertEquals(test, mockSomething);
     }
}

这次测试失败了,我不知道这里出了什么问题。我还看到下面的链接配置测试与电源mockito.https://github.com/jayway/powermock/wiki/TestNG_usage

我尝试将我的测试类扩展到PowerMockTestCase,在运行测试时,它让我发现了以下错误。

   [testng] [TestNG] [ERROR]
   **[testng] Error creating object factory**
   [testng] The tests failed.

我有以下疑问:-

1)要么我的测试没有正确配置为使用电源mockito,但电源mockito简单的测试用例工作。

2) 缺少某些配置。

共有1个答案

慕永年
2023-03-14

我最近发现了这个问题,这是因为一些依赖库,比如javassist,它已经很旧了。用更新的3.20版本替换它解决了这个问题,PowerMockito构造函数模拟工作正常。

 类似资料:
  • 问题内容: 我正在尝试第一次使用PowerMockito模拟类构造函数,但是它不起作用。我当前的代码是: 测试失败,因为返回的值为“ Fail”。我的问题在哪里? 问题答案: Okey,找到答案了,您需要致电 代替

  • 考虑下面给出的代码: 我正在尝试编写一个单元测试用例: < li >调用< code >对象b。B()必须被嘲笑 < li >必须模拟对构造函数的调用 这就是我使用Mockito和Powermockito所做的: 第一个模拟成功工作,但第二个模拟使用 失败,并出现以下错误: org.powermock.reflect.exceptions.ConstructorNotFoundException:

  • 我在这里面临一个非常奇怪的问题。 以下是我的测试课程: SearchViewModel。Java语言 这里的测试用例工作得非常好,直到我删除了行

  • 有人能帮帮我吗?提前谢了。

  • 问题内容: 我想将构造函数模拟为方法。 在我的测试中,我想做这样的事情: 但是给我这个 错误 知道为什么吗? 问题答案: 您可以使用PowerMock模拟构造函数。 如果由于某种原因而无法使用PowerMock,则最可行的解决方案是将工厂注入到包含此方法的任何类中。然后,您将使用工厂创建对象并模拟工厂。

  • 我正在为我的java类编写测试类。我将Junit5与Mockito一起使用。 我使用的Junit5与Power Mockito不兼容,所以我只使用Mockito。 我有,它具有下面这样的函数,并且在构造函数中初始化了。 当我编写测试用例时,我模拟了,但是由于我们在一个方法中创建,我如何模拟,这样我就可以编写期望值,根据我在测试类中设置的选择获得值?