我的应用程序中有一些名为Offer
的实体。它有一些领域,如价格,描述和3-4更多。当我正在学习TDD时,我不想在没有测试要求的情况下引入这些字段。问题是像title
这样的字段没有我可以要求的任何商业含义所以测试将是:
user creates offer with title "xyz"
assert that offer has title xyz
有没有其他方法来介绍这种领域。我是否应该为这种情况编写测试?
答案 0 :(得分:2)
在TDD中,您可以编写功能测试。在你的情况下,场地本身并不重要。您希望实例保留特定值。对此的测试可能是:
sut.setProperty(value)
assertThat(sut.getProperty(), is(value)
但我不会为此编写测试,因为它没有真正的功能。您应该有其他测试使用这些属性并为其覆盖getter / setter。例外情况是getter / setter包含某种逻辑,例如值具有上限。
答案 1 :(得分:0)
这里的核心方面是:良好的OOP专注于行为而不是状态。换句话说:至少在谈论面向对象的语言时,您更喜欢不将公开字段暴露给类的外部。
相反,您会考虑行为 - 又名方法。从这个意义上说,另一个答案是正确的;你宁愿创建getter / setter并验证它们。
此处有一个免责声明:如果可能,请避免使用setter。而是确保您的字段只分配一次(由构造函数)。换句话说:努力编写不可变类。
回到我的初始观点: a" field"实现是一个内部实现细节。这是你不希望外界知道的事情 - 这样你就可以根据需要自由改变实施!