任何人都可以对如何最好地使用EasyMock进行呼叫提出任何建议Runtime.getRuntime().exec(xxx)吗?
Runtime.getRuntime().exec(xxx)
我可以将调用移到另一个实现接口的类中的方法中,而不是在理想环境中。
interface RuntimeWrapper { ProcessWrapper execute(String command) throws IOException; } interface ProcessWrapper { int waitFor() throws InterruptedException; }
我想知道是否还有其他建议?
你的班级不应该打电话Runtime.getRuntime()。它应该期望将a Runtime设置为其依赖项,并对其进行处理。然后,在测试中,您可以轻松提供一个模拟并将其设置为依赖项。
Runtime.getRuntime()
Runtime
作为旁注,我建议您观看有关面向对象设计的本课程以提高可测试性。
更新: 我没有看到私有构造函数。您可以尝试使用Java字节码检测器来添加另一个构造函数或将该构造函数公开,但是事实证明这也是不可能的(如果对该类有一些限制)。
因此,您的选择是制作一个包装器(如您在问题中所建议的),并遵循依赖项注入方法。