Power Mockito无法模拟构造函数

时间:2016-02-07 01:54:36

标签: java unit-testing ant testng powermockito

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

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);
     }
}

这个测试失败了,我不知道这里出了什么问题。另外我在下面看到使用power mockito配置testng的链接。 https://github.com/jayway/powermock/wiki/TestNG_usage

我尝试将我的测试类扩展到PowerMockTestCase,并在运行测试时让我误以为错误。

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

我心中有疑惑: -

1)我的testng没有正确配置使用Power Mockito,但是电源模拟简单的测试用例可以工作。

2)缺少某些配置。

1 个答案:

答案 0 :(得分:1)

我最近弄清楚了这个问题,这是因为一些依赖库,即javassist,它已经很老了。用更新版本3.20替换它解决了问题,并且PowerMockito构造函数模拟工作。