【问题标题】:How can I use Mockito for unit testing in case with inheritance?在继承的情况下,如何使用 Mockito 进行单元测试?
【发布时间】:2014-06-21 17:55:43
【问题描述】:

我需要测试三个课程。事实上,我需要编写一些单元测试来涵盖此类的所有功能。但问题是我不知道我需要从什么时候开始。就我而言,使用 Mockito 框架非常重要。所以我会得到任何帮助。

这是我的课

public class Girl extends Father {

    protected Girl(Info info) {
        super(info);
    }

    public Boy create(String param) {
        return new Boy(info, param);
    }
}

男孩班

public class Boy extends Father {
    private final String param;

    public Boy(Info info, String param) {
        super(info);
        this.param = param;
    }

    public void method (){
        new RemoteService().invoke(param);
    }
}

Info类(这个类我不用测试)

public class Info {
    private Integer accountNumber;

    public Integer getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(Integer accountNumber) {
        this.accountNumber = accountNumber;
    }
}

还有父类 公共抽象类父亲{

    protected final Info info;

    public Father(Info info) {
        this.info = info;
    }
}

【问题讨论】:

  • Girl 扩展 Father?我思想开放,但我觉得这里出了点问题……
  • 这里似乎没什么可测试的。
  • 您认为为什么需要使用 Mockito?你想测试什么?
  • 我收到的一个建议是检查Info 实例实际上传递给Father super(info)Girl 类中。
  • 你想测试什么,到目前为止你尝试了什么?

标签: java unit-testing mockito


【解决方案1】:

这里没有 Mockito 或 PowerMock 可以做的事情。您可能测试的唯一条件是Girl 类中的create 使用正确的infoparam 创建一个新的Boy。假设您有适当的 getter 方法,您可以在 GirlTest 类中这样做。不需要嘲笑。

@Test
public void createMakesNewBoy() {
    Info testInfo = new Info();
    Girl toTest = new Girl(testInfo);
    Boy created = toTest.create("param");
    assertEquals("param", created.getParam());
    assertSame(testInfo, created.getInfo());
}

除了create 方法之外,您没有任何可以测试的方法。

【讨论】:

    【解决方案2】:

    如果你想测试构造函数或静态方法,你应该看看像Powermock 这样的工具,它目前用于补充 Mockito 来处理那些使用 Mockito 不容易的用例。引用的页面有很多文档和指向示例的指针。最有趣的页面(正如您所说的 Mockito)应该是 MockitoUsage

    【讨论】:

    • 我觉得这个答案有点误导。 Powermock 将帮助您 stubverify 构造函数或静态方法;但它对实际测试它们没有帮助。测试构造函数和静态方法需要与测试任何其他方法相同的技术。
    • @DavidWallace 你是对的。如果您觉得在 cmets 中声明还不够,请随时编辑我的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多