如何在 Java 中测试抽象 class 的构造函数逻辑
How do test an abstract class's constructor logic in Java
我有以下代码片段,其中我有一个带有参数化构造函数的抽象 class。
public abstract class Cat {
protected final Connection con;
protected Cat(Connection con) throws SQLException {
if (con == null || con.isClosed()) {
throw new SQLException("failed);
}
this.con = con;
}
}
是否可以使用 Java mockito 测试构造函数的行为?例如,如果提供了关闭的连接,我可以测试构造函数失败吗?
您可以像这样实例化您的抽象 class 并将连接的 Mockito Mock 作为参数传递。
@Mock
Connection conn;
// in your test method
new Cat(conn){};
我认为如果您测试派生 class 的构造函数就足够了,它扩展了这个抽象 class。由于您无法创建 abstract class 的实例,因此单独测试它没有意义。即使是私有方法也不会单独测试。如果您尝试为此 class 创建匿名对象进行测试,它也将被视为派生对象 class
因此测试派生的 class 构造函数,它显然将调用超级构造函数,因此您的抽象 class 构造函数代码将已经被覆盖。
我有以下代码片段,其中我有一个带有参数化构造函数的抽象 class。
public abstract class Cat {
protected final Connection con;
protected Cat(Connection con) throws SQLException {
if (con == null || con.isClosed()) {
throw new SQLException("failed);
}
this.con = con;
}
}
是否可以使用 Java mockito 测试构造函数的行为?例如,如果提供了关闭的连接,我可以测试构造函数失败吗?
您可以像这样实例化您的抽象 class 并将连接的 Mockito Mock 作为参数传递。
@Mock
Connection conn;
// in your test method
new Cat(conn){};
我认为如果您测试派生 class 的构造函数就足够了,它扩展了这个抽象 class。由于您无法创建 abstract class 的实例,因此单独测试它没有意义。即使是私有方法也不会单独测试。如果您尝试为此 class 创建匿名对象进行测试,它也将被视为派生对象 class
因此测试派生的 class 构造函数,它显然将调用超级构造函数,因此您的抽象 class 构造函数代码将已经被覆盖。