Testing 如何将sshs写入另一台机器的方法的单元测试?
我想为一段代码编写单元测试,该代码实际上通过ssh连接到另一台机器并运行命令。我不知道如何着手解决这个问题 代码基本上在远程机器上运行一些命令(Testing 如何将sshs写入另一台机器的方法的单元测试?,testing,junit,Testing,Junit,我想为一段代码编写单元测试,该代码实际上通过ssh连接到另一台机器并运行命令。我不知道如何着手解决这个问题 代码基本上在远程机器上运行一些命令(copy,grep,awk)。如何在不访问远程计算机的情况下编写测试。如何模拟远程计算机环境 注意事项: -假设单元测试运行的机器无法访问ssh命令需要运行的远程服务器。我不会实际测试建立连接、运行任务和测试结果的整个过程(验收测试) 我建议将其分为两部分: 您希望建立连接的前半部分以及希望运行的命令。这里您将测试用于建立连接的方法是否具有您期望的正确输
copy
,grep
,awk
)。如何在不访问远程计算机的情况下编写测试。如何模拟远程计算机环境
注意事项:-假设单元测试运行的机器无法访问ssh命令需要运行的远程服务器。我不会实际测试建立连接、运行任务和测试结果的整个过程(验收测试) 我建议将其分为两部分:
connect
生成正确的shell命令字符串grep
(例如)时的响应。在这里,您可以将希望其他机器返回给您的代码交给您,并确保您的代码符合您对该特定响应的期望。另一个例子是,当你得到2017-1-17导弹发射的响应时,你测试你的代码是否保存了日期和状态(显然我不知道你的应用程序是什么,这只是一个例子)这就是我要做的,但我相信其他人会给你很好的例子,告诉你如何在一个巨大的测试中测试整个堆栈。我认为我的方法更加稳定和模块化,使将来添加更多测试更加容易。您至少有以下选项:
Connect,运行命令一切都是方法的一部分(例如,public void runCmd();)在这种情况下,我该怎么做?所有其他方法都是私有的。听起来你需要分离你的关注点。如果你所做的一切(连接,运行脚本,解析响应等)生活在一个类中,你应该考虑把你的类分成几个类,每个类都有一个责任。那么,您应该能够测试您的各个部分/动作。