如何在JUnit中模拟外部程序调用

时间:2016-08-16 09:42:38

标签: java junit mocking

在我的Java Web Spring应用程序中,我必须调用外部程序。这些不是一些REST API调用,而是文件系统上的一些系统二进制文件。

如何有效地测试/模拟这些呼叫?

由于

1 个答案:

答案 0 :(得分:2)

你必须在抽象中思考。

示例:您可以创建类似

的内容
interface BinaryRunner {
   void runBinary(String command, String... args); 
}

class BinaryRunnerImpl implements BinaryRunner { ...

(当然,这只是一个例子;因为我完全离开了我们的错误处理路径)

你的“生产”代码使用它来运行二进制文件。现在您可以模拟BinaryRunner的实例并将其提供给您的生产代码。您的生产代码会拨打电话;你可以使用模拟来检查它。

最后:当然,测试BinaryRunner的实现可能会有点困难; - )