Java 在静态方法中模拟构造函数
下面是我试图进行单元测试的代码Java 在静态方法中模拟构造函数,java,unit-testing,powermock,processbuilder,Java,Unit Testing,Powermock,Processbuilder,下面是我试图进行单元测试的代码 public final class ClassToBeTested { public static void function(String arg) { ProcessBuilder pb = new ProcessBuilder(arg); //Using pb here } } 我想在这里模拟构造函数调用(新文件(arg)) 我试过使用Power Mock: @PrepareForTest({ClassTo
public final class ClassToBeTested {
public static void function(String arg) {
ProcessBuilder pb = new ProcessBuilder(arg);
//Using pb here
}
}
我想在这里模拟构造函数调用(新文件(arg))
我试过使用Power Mock:
@PrepareForTest({ClassToBeTested.class})
public class TestClass {
@Test
public void functionTest() throws Exception {
String str = "abc";
ProcessBuilder mockProcessBuilder = PowerMock.createMock(ProcessBuilder.class);
PowerMock.expectNew(ProcessBuilder.class, str).andReturn(mockProcessBuilder);
PowerMock.replay(mockProcessBuilder, ProcessBuilder.class);
ClassToBeTested.function(abc);
}
}
这似乎不起作用。因为新ProcessBuilder(arg)没有返回模拟对象。添加@RunWith(PowerMockRunner.class)
有助于解决此问题
同时使用
PowerMock.replayAll()
即使它能工作,在我看来也是无用的-构造函数调用永远不能返回null
,那么为什么要在它返回时测试一个情况呢?你为什么要模拟文件
(接下来,你通常会使用重播(fileMock,File.class)
)实际上File和null的使用只是一个例子,那么你给出一个不涉及null
的例子,这样你就可以适当地调用重播
?(根据我链接到的文档)添加了我想要测试的确切代码