如何编写ssh到另一台机器的方法的单元测试?

时间:2017-01-17 20:42:04

标签: testing junit

我想为实际ssh到另一台机器并运行命令的代码编写单元测试。我迷失了如何解决这个问题。

代码基本上在远程计算机上运行一些命令(copygrepawk)。如何在无法访问远程计算机的情况下编写测试。如何模拟远程计算机环境?

考虑:
- 假设运行单元测试的机器无法访问需要运行ssh命令的远程服务器。

2 个答案:

答案 0 :(得分:0)

我实际上不会测试建立连接,运行任务和测试结果的整个过程(验收测试)。

我建议把它分成两部分:

  1. 您希望建立连接的前半部分以及您希望运行的命令。这里您将测试您建立连接的方法是否具有正确的输出你期待。例如,测试调用connect会形成正确的shell命令字符串。

  2. 第二部分是模拟来自运行grep的响应(例如)。这是您将代码交给的地方您希望其他计算机发回给您,并确保您的代码完成您对该特定响应的期望。另一个例子可能是当你得到2017-1-17 The missiles launched作为回复时,你测试你的代码保存了一个日期和状态(显然我不知道你的应用是什么,这只是一个例子)

  3. 我就是这样做的,但我相信其他人会给你很好的例子来说明如何在一个巨大的测试中测试完整的堆栈。我认为我的方式更加稳定和模块化,使得将来更容易添加更多测试。

答案 1 :(得分:0)

您至少有以下选项:

  1. 将您的方法拆分为几个不同的方法(连接和执行)并在本地测试'执行'部分

  2. 让您的测试在运行命令之前启动准备好的docker容器,并使用url参数化您的命令。在测试之后,应该停止/删除docker容器