0

在 Java 中,我有抽象类Place,有两个具体的子类AreaLevelLevel必须有父母Area。但是在尝试对 进行单元测试时Level,我不想创建一个完整的Area. 我看到了两种处理方法:

1)创建一个接口IPlace,由接口扩展IAreaPlaceArea实现。然后创建一个MockArea实现的类IArea,并在测试时将其传递给Level它。

2)使用一个模拟框架,它会自动为我创建模拟对象。

哪种方式更好?或者有第三种方法吗?

4

2 回答 2

0

您并没有向我们说明您不想创建一个完整的Area. 这些是它具有的依赖项。依赖注入就是答案。

例如,假设Area在其构造函数中执行此操作:

public Area() {    
    //get db connection
    //do something with db connection
}

现在,当您创建 时Level,它将连接到数据库。以下是您如何重写构造函数以使用依赖注入:

public Area(Connection con) {    
    //do something with db connection
}

现在,当Level您创建一个. ConnectionLevel

现在你可以使用一个模拟框架来制作一个假的Connection. 我推荐 Mockito。

于 2013-06-07T01:56:05.327 回答
0

正如您所写,我建议使用模拟框架。

依赖注入很棒。使用它可以让你的类以一种明显的方式声明他们需要与之交互的事物类型。如果处理得当,对模拟对象的需求通常是不可避免的。习惯使用模拟框架。我个人喜欢 Mockito。

于 2013-06-07T01:56:18.533 回答