【发布时间】:2014-06-30 14:23:36
【问题描述】:
下面是依赖于TableData 的DBMetaData 类:
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
public class DBMetaData {
private DataSource dataSource;
private Map<String, TableData> tables;
private static final String[] TYPES = {"TABLE", "VIEW"};
public DBMetaData(DataSource dataSource) {
this.dataSource = dataSource;
this.tables = new HashMap<String, TableData>();
}
.......
}
public class TableData {
private String name;
private Map<String, ColumnData> columns = new HashMap<String, ColumnData>();
private String catalog;
private String schema;
TableData(ResultSet rs, DatabaseMetaData meta) throws SQLException {
catalog = rs.getString("TABLE_CAT");
schema = rs.getString("TABLE_SCHEM");
name = rs.getString("TABLE_NAME");
initColumns(meta);
}
.......
}
如何编写这些类的测试用例,因为它们都没有无参数构造函数。 据我了解:
- 要么我必须编写一个无参数构造函数,要么
- 使用反射进行测试。
我无法从上述两种方法中理解我应该使用什么。
根据 oops 概念,哪一个在架构上更好?
除了以上两种,还有其他可能吗?
是否有任何参考或资源可以通过重构来编写测试用例 这种类型的代码?
【问题讨论】:
-
您不编写默认构造函数。你编写一个无参数构造函数,或者让编译器为你提供一个默认构造函数。
-
感谢指正
-
在这种情况下,您不能使用默认构造函数,因为您已经为类创建了构造函数。您可以创建像提到的 Sotirios 这样的无参数构造器来测试您的类
-
我不明白问题出在哪里。您使用测试中所需的参数调用构造函数,现在调用要测试的方法。为什么需要无参数构造函数?
-
否则我必须将 DataSource 实例传递给类...我实际上不知道如何编写测试用例。所以我有点卡在这里。我不知道哪种方法更好。它将是 g8如果你能指导我。
标签: java unit-testing testing junit refactoring