假设我有一堂课Foo
仅用类的实例实例化Bar
:
public Foo(Bar x) {
this.a = x.a();
this.b = x.b();
...
}
现在我想测试一下Foo
,进一步假设一个实例Bar
想要达到的状态是很难创造的。作为附加约束,字段a, b, ...
被声明为最终的,因此该字段的设置器不可用。
一种可能是在 Foo 中创建一个额外的构造函数:
protected Foo(A a, B b, ...) {
this.a = a;
this.b = a;
...
}
该构造函数仅在测试期间使用,我将在该构造函数的注释中声明。
问题:这是代码味道吗?
我想到的另一个解决方案是嘲笑Bar
。想知道在这种情况下这是否是最佳实践?
Mocking Bar 更有可能被认为是最佳实践。您应该能够创建一个 MockBar,这样您就可以执行以下操作
Foo foo = new Foo(new MockBar(a, b));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)