Junit 在方法内声明(或)创建实例变量
Junit 在方法内声明(或)创建实例变量,junit,Junit,根据我过去几个月在Junit中使用easymock和powermock的经验,我发现当在方法级范围中声明和实例化实例变量时,我们需要求助于powermock框架来对其进行模拟。因此,我可以安全地假设在方法中创建实例变量不是一种好的编程实践。非常感谢您在这方面的宝贵意见。 谢谢 Venkatesh听起来你在描述依赖注入试图解决的问题 如果我有一个像这样的班级比萨饼: class Pizza { private Sauce sauce; // instance variable
根据我过去几个月在Junit中使用easymock和powermock的经验,我发现当在方法级范围中声明和实例化实例变量时,我们需要求助于powermock框架来对其进行模拟。因此,我可以安全地假设在方法中创建实例变量不是一种好的编程实践。非常感谢您在这方面的宝贵意见。
谢谢
Venkatesh听起来你在描述依赖注入试图解决的问题 如果我有一个像这样的班级比萨饼:
class Pizza {
private Sauce sauce; // instance variable
private Cheese cheese; // instance variable
public Pizza() {
sauce = new TomatoSauce(); // instantiate instance variable in constructor
cheese = new BlueCheese(); // ... or in a method
}
// ...other stuff
}
(其中saint
和Cheese
是TomatoSauce
和BlueCheese
实现的接口)
那么你是对的,这是很难在没有模拟的情况下进行单元测试的。但是,更糟糕的是,您的Pizza类与具体实现BlueCheese
和TomatoSauce
紧密耦合,因此以后很难修改
如果为实例变量注入值,不仅可以消除模拟的需要,而且代码的耦合也会变得不那么紧密。比如,
class Pizza {
private Sauce sauce;
private Cheese cheese;
public Pizza(Sauce sauce, Cheese cheese) {
this.sauce = sauce;
this.cheese = cheese;
}
// ...other stuff
}
一,;这就不需要模拟Sauce
和Cheese
变量,这也意味着Pizza
类不再与Sauce
和Cheese
的具体实现紧密耦合。您现在可以非常轻松地更改实现
因此,在第一个示例中设置实例变量不被视为良好实践
这是有道理的。但我的问题是在方法范围内声明这些变量并实例化它们。我想知道这是否是正确的做法。这里我有一些遗留应用程序,我们需要对其进行模拟,我们遇到了前面提到的问题,我们不得不求助于使用powermock来处理此类场景。让我知道你的意见。