【发布时间】:2019-04-23 08:46:13
【问题描述】:
我正在使用 java 创建手动依赖注入。我正在尝试为此创建 Mockito 测试。
因为我是 Mockito 的新手,而且我以前只为基于框架的人做过。所以在下面需要你的帮助
//All Business logic holder class. It does not have any new operator. Even, it does not have any knowledge about the concrete implementations
class MyClass {
private MyProto a;
private B b;
private C c;
MyClass(MyProtoImpl a, B b, C c) {
//Only Assignment
this.a = a;
this.b = b;
this.c = c;
}
//Application Logic
public void doSomething() {
a.startClient(c);
//Do B specific thing
//Do C specific thing
}
}
//The Factory. All the new operators should be placed in this factory class and wiring related objects here.
class MyFactory {
public MyClass createMyClass() {
return new MyClass(new AImpl(), new BImpl(), new CImpl());
}
}
class Main {
public static void main(String args[]) {
MyClass mc = new MyFactory().createMyClass();
mc.doSomething();
}
}
所以最后我需要实现两件事。
- 测试 MyFactory 类和 MyClass
- 测试 MyProtoImpl 类。所以通过这种方式我可以获得整个代码覆盖率。所以不仅 MyProtoImpl 需要被 Junit Mockito MyFactory 覆盖,MyClass 也需要被覆盖
【问题讨论】:
-
您到底想测试什么?我只看到一个带有包私有构造函数的普通类和一个用于实例化对象的工厂类。但我不明白你的意思
-
//Application Logic public void doSomething() { //a.Method1ReadFile() //b.printSomething(); //c.myBusinessLogic(); } -
你想写一个单元测试吗?在哪里连接依赖项?
-
@Ph03n1x 刚刚编辑了问题。请检查一次
-
所以最后我需要实现两件事。 1.测试MyFactory类和MyClass。 2. 测试 MyProtoImpl 类。所以通过这种方式我可以获得整个代码覆盖率。所以不仅 MyProtoImpl 需要被 Junit Mockito MyFactory 覆盖,MyClass 也需要被覆盖
标签: java unit-testing junit mockito powermock