這是一個簡單的域類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