gpt4 book ai didi

java - 使用 EasyMock 测试构造另一个对象的方法

转载 作者:行者123 更新时间:2023-12-02 07:36:08 27 4
gpt4 key购买 nike

我有一个这样的方法:

public void MyMethod(int p1, int p2) {
//some logic here
MyObject mo = new MyObject(var1,var2);
int returnedId = mo.doOperation(something);
//Do something with the returnedId;
}

我想测试这个方法,但我无法模拟构造函数调用,因此围绕此方法的测试会破坏模块化。我可以使用工厂方法或其他方法来完成此操作,但由于我只有一个构造函数,因此没有意义。

这通常是如何使用 EasyMock 完成的?

最佳答案

仅使用 EasyMock 无法做到这一点。但有一些解决方案,例如使用 PowerMock作为 EasyMock 的扩展,以便您可以模拟静态方法、构造函数调用、 final方法等。

但在此之前,请仔分割析您的问题。您真的需要在 MyMethod 中创建 MyObject 吗?一般来说,最好将类的所有依赖项都作为构造函数参数或通过 setter 传入。这就是通常称为“依赖注入(inject)”的模式。通过进行依赖项注入(inject),您可以避免像您提到的那样的可测试性问题。

此外,正如 Duncan Jones 指出的那样,MyMethod 可以将 MyObject 作为参数,也可以通过工厂获取它。这两种解决方案通常都比将对象实例化与应用程序逻辑混合更好。

关于java - 使用 EasyMock 测试构造另一个对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204361/

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