我的应用程序中有一个名为Offer的实体。它有一些领域,如价格,描述和3-4更多。由于我目前正在学习TDD,我不想在没有测试要求的情况下介绍这些字段。问题是,像title这样的字段没有任何业务意义,因此我可以要求测试如下:
user creates offer with title "xyz"
assert that offer has title xyz还有其他方法来介绍这种领域吗。我甚至应该为这种情况而费心写测试吗?
发布于 2017-07-17 06:54:26
在TDD中,您编写功能测试。在您的例子中,字段本身并不重要。您希望实例保留特定的值。对此的测试可以是:
sut.setProperty(value)
assertThat(sut.getProperty(), is(value)但是我不会为此编写测试,因为它没有真正的功能。您应该有其他使用这些属性的测试,并为其覆盖getter/setter。异常是当getter/setter包含某种逻辑时(例如,值具有上限)。
发布于 2017-07-17 09:21:07
这里的核心方面:好的OOP关注的不是行为,而是状态。换句话说:至少在谈到面向对象的语言时,您不希望将字段公开给类的外部。
相反,您可以从行为的角度来考虑--也就是方法。从这个意义上讲,另一个答案是正确的;您宁愿创建getter/setter并验证它们。
这里有一个免责声明:如果可能的话,避免设置者。相反,请确保您的字段只分配一次(由构造函数分配)。换句话说:努力编写不可变的类。
回到我最初的观点:如何实现“字段”是内部实现的细节。这是你不想让外界知道的事情--如果需要的话,你可以自由地改变实现!
https://stackoverflow.com/questions/45133859
复制相似问题