加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读