gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:40:55 25 4
gpt4 key购买 nike

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

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 调用 verify 方法,以确保 processBuilderSearch.start() 执行一次,并且 searchProcess.getInputStream() 也执行一次。
模板:

verify(mockObject, times(3))

关于Java 程序具有 Linux 方法 - 我可以在其上运行 Junit 测试用例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61865644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com