Java 程序有 Linux 方法 - 我可以在它们上运行 Junit 测试用例吗?



我有一个Java程序,可以在一天结束时清理我们的环境。因此,我在一个名为 UnixUtil 的 Util 类中编写的一个方法.java在我们的 linux 服务器上执行正在运行的进程,如果成功,则返回一个 String 对象,如果无法执行命令,则返回一个空对象:

ProcessBuilder processBuilderSearch = new ProcessBuilder();
String command = "ps -ef|grep -i engservice|grep -v grep|wc -l"
try {
Process searchProcess = processBuilderSearch.start();
StringBuilder sb = new StringBuilder();
BufferedReader searchCommanndReader = new BufferedReader(new         InputStreamReader(searchProcess.getInputStream()));
String lineSearch;
while((lineSearch=searchCommandReader.readLine())!=null) {
sb.append(lineSearch);
}
return sb.toString();
} catch(Exception e) {
LOGGER.error("Exception occurred: [{}]", ExceptionUtils.getStackTrace(e));
}
return null;

我只是想知道如何编写 Java 测试覆盖率/自动测试用例来测试此类 linux 命令。有办法吗?

当然,您不会对 linux 命令进行单元测试,但您可以测试是否调用了 linux 命令。
您可以通过模拟 ProcessBuilder 类(并将其作为参数传递给方法,以便您可以传递模拟(来做到这一点。
然后从 Mockito 调用验证方法,以确保 processBuilderSearch.start(( 执行一次,并且 searchProcess.getInputStream(( 也执行一次。
模板:

verify(mockObject, times(3))

最新更新