我想模拟一个继承的受保护方法.我无法直接从java代码调用此方法,因为它从另一个包中的类继承.我找不到一种方法来指定这个方法来存入when(...)
package a;
public class A() {
protected int m() {}
}
package b;
public class B extends a.A {
// this class currently does not override m method from a.A
public asd() {}
}
// test
package b;
class BTest {
@Test
public void testClass() {
B instance = PowerMockito.spy(new B());
PowerMockito.when(instance, <specify a method m>).thenReturn(123);
//PowerMockito.when(instance.m()).thenReturn(123); -- obviously does not work
}
}
Run Code Online (Sandbox Code Playgroud)
我查看了PowerMockito.when覆盖,这似乎只是私人方法!
如何指定受保护的方法?
我想测试它连接到包含JCR节点,我们使用JackRabbit用一个SQL Server数据库的Web服务方法.
该方法如下:
public String addDocumentByJson(String fileName, byte[] fileContent, int status, String userName, String jsonProperties) {
UUID id = UUID.randomUUID();
// It does a bunch of operations here
return jsonResult;
}
Run Code Online (Sandbox Code Playgroud)
jsonResult与此类似的对象在哪里:
{
"id" : "<A random UUID>"
"version" : 1
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试测试它下面的步骤这个答案在和代码这个职位和我来到了用下面的代码(这是我说的是基于过去的链接):
@PrepareForTest({ UUID.class })
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/TestSpringConfig.xml")
public class TestJackRabbitService {
@Autowired
@Qualifier("jackRabbitService")
IJackRabbitService jackRabbitService;
private byte[] fileContent;
private int versionFile;
public TestJackRabbitService() {
classLoader = getClass().getClassLoader();
}
@BeforeClass
public static void init() …Run Code Online (Sandbox Code Playgroud)