无论如何在Java JUnit测试中模仿或模拟Linux命令行

时间:2014-06-24 20:58:23

标签: java linux unit-testing junit

我最近一直在为应用程序进行JUnit测试。

此应用程序在Linux环境中执行,参数,选项和其他关键信息将合并到命令行中,然后发送到Java代码。

我一直在尝试使用JUnit 3.8.1找到测试应用程序某些方面的不同方法,但是我遇到了一些处理命令行和从它传递的参数的方法的问题。

我的问题:无论如何设置模拟或伪造的Linux命令行提示符,或者甚至尝试使用输入测试方法的命令行的硬编码?

我已经研究了一段时间,但我找不到真正回答我问题的任何内容。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

main方法是一个像任何其他方法一样的方法,所以你可以像任何其他方法一样对它进行单元测试,通过数组od字符串作为命令行参数。

但我不这样做。相反,我有main方法创建一个Program对象并委托给该对象。我对这个Program课进行单元测试。这样我就可以模拟环境的其他方面:Program类的构造函数传递给命令行参数的字符串数组,系统属性的Properties对象,{{1} }用于环境变量,等等。我留下了一个小的主要方法,我不进行单元测试,而Map类我可以进行彻底的单元测试。

答案 1 :(得分:1)

我不知道你搜索的是不是。要从java执行commando linea命令,您可以使用ExecuteShellCommand。

   ExecuteShellComand obj = new ExecuteShellComand();           
     String output = obj.executeCommand(command);