java – 在测试期间只使用特殊构造函数是代码味道吗?
发布时间:2020-12-15 05:06:13 所属栏目:Java 来源:网络整理
导读:假设我有一个类Foo,它只用类Bar实例实例化: public Foo(Bar x) { this.a = x.a(); this.b = x.b(); ...} 现在我想测试Foo,进一步假设很难创建具有所需状态的Bar实例.作为附加约束,字段a,b,…被声明为final,因此这些字段的setter不可用. 可能的方法是在Foo中
假设我有一个类Foo,它只用类Bar实例实例化:
public Foo(Bar x) { this.a = x.a(); this.b = x.b(); ... } 现在我想测试Foo,进一步假设很难创建具有所需状态的Bar实例.作为附加约束,字段a,b,…被声明为final,因此这些字段的setter不可用. 可能的方法是在Foo中创建一个额外的构造函数: protected Foo(A a,B b,...) { this.a = a; this.b = a; ... } 此构造函数仅在测试期间使用,我将在此构造函数的注释中声明. 问题:这是代码味吗? 我想到的另一个解决方案是嘲笑Bar.想知道它是否是这种情况下的最佳做法? 解决方法
模拟棒更有可能被认为是最佳实践.你应该可以创建一个MockBar,这样你就可以做到
Foo foo = new Foo(new MockBar(a,b)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |