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

问题描述 投票:0回答:1

我有一个java程序,它在End-of-Day的时候对我们的环境进行清理,因此,我在一个名为UnixUtil.java的Util类中写了一个方法,在我们的linux服务器上执行正在运行的进程,并在其中运行Junit测试用例。因此,我在一个名为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命令。有什么方法吗?

java linux junit automated-tests
1个回答
0
投票

你当然不会对linux命令进行单元测试,但是你可以测试linux命令是否被调用。你可以通过嘲弄ProcessBuilder类来实现(也可以把它作为方法的参数,这样你就可以通过嘲弄来代替)。然后调用Mockito的verify方法来确保processBuilderSearch.start()被执行过一次,并且searchProcess.getInputStream()也被执行过一次。模板。

verify(mockObject, times(3))
© www.soinside.com 2019 - 2024. All rights reserved.