mts*_*tsz 5 java testing constructor unit-testing
假设我有一个Foo只用类实例实例化的类Bar:
public Foo(Bar x) {
this.a = x.a();
this.b = x.b();
...
}
Run Code Online (Sandbox Code Playgroud)
现在我想测试Foo,进一步假设Bar难以创建具有所需状态的实例.作为附加约束,字段a, b, ...被声明为final,因此这些字段的setter不可用.
可能的方法是在Foo中创建一个额外的构造函数:
protected Foo(A a, B b, ...) {
this.a = a;
this.b = a;
...
}
Run Code Online (Sandbox Code Playgroud)
此构造函数仅在测试期间使用,我将在此构造函数的注释中声明.
问题:这是代码味吗?
我想到的另一个解决方案就是嘲笑Bar.想知道它是否是这种情况下的最佳做法?
模拟棒更有可能被认为是最佳实践.你应该可以创建一个MockBar,这样你就可以做到
Foo foo = new Foo(new MockBar(a, b));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |