gpt4 book ai didi

java - 测试具有带参数的构造函数的抽象类

转载 作者:行者123 更新时间:2023-11-30 05:08:35 27 4
gpt4 key购买 nike

我必须测试一个正在实现接口(interface)之一的抽象类。抽象类有一个带参数的构造函数。我使用 Mockito 作为测试框架。那么如果我需要调用抽象类中的方法,最好的方法应该是什么?

如果我尝试子类化抽象类,它会要求实现参数构造函数,并且不允许编写无参数构造函数。另外,如果我尝试模拟一个没有无参数构造函数的类,并将 sysouts 放入方法中,通常我看不到它们被调用(模拟的类是否需要强制的无参数构造函数?),尽管没有 junit 失败。

请帮忙。提前致谢。

最佳答案

测试抽象类的一种方法是实现它的具体子类,仅用于测试。

如果抽象类只有一个带参数的构造函数,你可以做不同的事情:

  • 将 null 传递给其参数
  • 将模拟对象传递给其参数
  • 将具体对象传递给其参数

您选择哪种方式取决于您的测试用例和抽象类的实现。 - 当然你可以混合使用这些方式。

示例:

abstract class A{
A(Object o) {
}
}

class TheNullWay extends A {
TheNullWay() {
super(null);
}
}

class TheMockedWay extends A {
TheMockedWay(Object o){
super(o);
}
}

new TheMockedWay(createMockedObject());

顺便说一句:测试使用抽象类的类是完全不同的事情。

关于java - 测试具有带参数的构造函数的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263927/

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