gpt4 book ai didi

java - 模拟 Runtime.getRuntime()?

转载 作者:太空狗 更新时间:2023-10-29 22:54:09 24 4
gpt4 key购买 nike

任何人都可以就如何最好地使用 EasyMock 来期待对 Runtime.getRuntime().exec(xxx) 的调用提出任何建议吗?

我可以将调用转移到另一个实现接口(interface)的类中的方法中,但在理想情况下我宁愿这样做。

interface RuntimeWrapper {
ProcessWrapper execute(String command) throws IOException;
}

interface ProcessWrapper {
int waitFor() throws InterruptedException;
}

我想知道是否有人有任何其他建议?

最佳答案

您的类不应调用 Runtime.getRuntime()。它应该期待一个 Runtime 被设置为它的依赖,并使用它。然后在您的测试中,您可以轻松地提供模拟并将其设置为依赖项。

作为旁注,我建议观看 this lecture on OO Design for testability .

更新:我没有看到私有(private)构造函数。您可以尝试使用 java bytecode instrumentation为了添加另一个构造函数或使构造函数公开,但这也可能是不可能的(如果对该类有一些限制)。

所以你的选择是制作一个包装器(正如你在问题中所建议的),并遵循依赖注入(inject)方法。

关于java - 模拟 Runtime.getRuntime()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2257901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com