这是一个简单的域类Grails应用程序:Grails域标准验证器:我应该测试还是不?
class User {
String username
static constraints = {
username unique: true
}
}
我的问题是:我应该写单元测试来检查用户名域是唯一的?
@Test
void cannotCreateMoreThanOneUserWithTheSameUsername() {
new User(username: 'john').save()
def secondUser = new User(username: 'john')
assert !secondUser.validate()
}
我怀疑这是因为:
如果我写按照TDD的原则用户类,那么我应该写执行约束关闭之前失败的测试。
另一方面,在域中设置唯一约束是一种数据模型配置,而不是真正的逻辑。而且,保存和验证方法在框架中实现。
这是关于SO的这类问题的问题。 OP不想测试约束条件。所以他选择了让他对此放心的答案。除了说更好的测试越多,没有真正的错误答案。 – Gregg
@Gregg如果你测试了绝对的一切,我想你会有更少的错误。但费用是多少?所以最终它总是会降低到只有OP可以决定的权衡,除非我们能够准确量化诸如上市时间,声誉,bug成本等一系列业务级别的结果。 –
@ Gregg的问题是维护测试代码(我几乎所有的项目都测试了几乎所有的约束条件)。问题是关于哲学/想法和最佳实践。 – promanski