当前位置: 首页 > 面试题库 >

模拟Runtime.getRuntime()?

太叔景曜
2023-03-14
问题内容

任何人都可以对如何最好地使用EasyMock进行呼叫提出任何建议Runtime.getRuntime().exec(xxx)吗?

我可以将调用移到另一个实现接口的类中的方法中,而不是在理想环境中。

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

interface ProcessWrapper {
    int waitFor() throws InterruptedException;
}

我想知道是否还有其他建议?


问题答案:

你的班级不应该打电话Runtime.getRuntime()。它应该期望将a
Runtime设置为其依赖项,并对其进行处理。然后,在测试中,您可以轻松提供一个模拟并将其设置为依赖项。

作为旁注,我建议您观看有关面向对象设计的本课程以提高可测试性。

更新:
我没有看到私有构造函数。您可以尝试使用Javahtml" target="_blank">字节码检测器来添加另一个构造函数或将该构造函数公开,但是事实证明这也是不可能的(如果对该类有一些限制)。

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



 类似资料:
  • 问题内容: 我正在开发一个Web应用程序,该应用程序显然在iOS设备中存在问题。问题是我不拥有iOS设备,而是在Linux Ubuntu中进行开发。我正在寻找一种在Linux(尤其是浏览器)中仿真/模拟此OS的方法,但是还没有找到任何东西。 到目前为止,我发现的是iOS SDK的Simulator,但这是针对Mac的。还有一些Windows模拟器。有人做过吗? 问题答案: 我能想到的唯一解决方案是

  • 上面还有第二个问题。当我在Expects块中定义mock类时(如上),似乎只调用了构造函数,而不是,因此没有正确初始化对象。我通过将它移到方法中并在那里实例化该类来解决这个问题。看起来是这样的: 因此,这似乎得到了要调用的正确构造函数,但似乎还在调用。有什么见解吗?

  • 问题内容: 对于单元测试,我需要模拟几个依赖项。依赖项之一是实现接口的类: 我需要设置一个此类的模拟对象,当提供一些指定参数时,该对象将返回一些指定值。 现在,我不确定的是,模拟接口或类是否更好 与 在测试方面有什么不同吗?首选的方法是什么? 问题答案: 在您的情况下,可能不会有太大的区别,但是首选的方法是模拟接口,就像通常情况下,如果您遵循TDD(测试驱动开发),那么即使在编写实现类之前,也可以

  • 问题内容: 我在Python中使用时遇到了一些困难: 测试实际上返回正确的值,但它是Mock对象,不是。您如何在Python库中模拟属性? 问题答案: 您需要使用和: 这意味着:调用时,在该调用的返回值上,为属性设置a以返回value 。

  • 我使用JDK1.6.0_24,当我尝试用Mockito模拟HTTP会话时,我出现了下一个错误:

  • 9.1 模拟 现实中有很多问题,如果不利用计算机的话,就很难解决甚至不可能解决。例如天气预 报,古人只能通过肉眼看天来做预测,现代人则通过为大气过程建立数学模型并进行数值计 算来做预测,最新的理论更将确定性模型发展到不确定性模型,从而能对大气这个混沌系统 的行为做出更准确预报。这一切都有赖于计算机模拟(simulation)技术的应用,即利用计 算机为现实问题甚至假想问题建立模型,通过改变一些变量