使用JUnit+Jmockit测试Process无法取得预期结果

nxct 2016-07-03 01:33:21
测试对象是一个封装了Process调用的工具类
测试方法使用Jmockit替换Process的返回值(exitValue)
期待结果获取的返回值是返回999,但是测试结果是1

初步判断是由于Process是抽象类,具体实现是在ProcessImpl类,然而ProcessImpl类对于测试类不可见,因此mock没有成功。

求高手指点迷津
谢谢

测试对象类:

package Test.ProcessTest;

import java.io.IOException;

public class ProcessUtils {

public static int execute(String... command) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder(command);

pb.redirectErrorStream(true);

Process p = pb.start();

p.waitFor();

return p.exitValue();
}
}


测试方法类

package Test.ProcessTest;

import java.io.IOException;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import mockit.Mock;
import mockit.MockUp;

public class ProcessUtilsTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void executeTest() throws IOException, InterruptedException {
new MockUp<Process>() {
@Mock
public int exitValue() {
return 999;
}
};

int re = ProcessUtils.execute("ping", "localhsot");
System.out.println("ExitValue : " + re);
}
}


测试结果

ExitValue : 1
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
木码人的木 2018-12-20
  • 打赏
  • 举报
回复
MockUp里放实现类就可以了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧