我在尋找良好做法的建議,迅速測試對象Equatable測試斯威夫特
的平等。如果我有很多特性的複合物很容易錯過平等的實現。
執行平等實施的最佳實踐是什麼?
更多詳細信息: 當然,你可以編寫測試來檢查兩個值是否相等,但這裏的問題是這個問題很容易中斷。 您的項目中有一個結構,六個月後另一位開發人員將該屬性添加到該結構中。 假設他忘記將屬性添加到平等。平等仍然有效,測試通過,但只有該屬性更改時,您的應用纔會中斷。我的問題是,有一種方法可以避免這個問題?
在一個非平凡的應用程序中,最終容易產生具有10個值的模型對象,並使用嵌套的模型對象。那麼我怎樣才能控制我的模型對象的平等呢?如何減少平等執行中的人爲錯誤風險?
可能的解決方案: 一個解決方案,我心目中是寫一個腳本,看起來在編譯時類和結構符合某個協議
Diffable : Equatable {}
對於所有的類/結構是採用Diffable
我會檢查測試文件是否存在等,即:
對於類Foo
我會找一個測試類Foo_Tests_Diffable
比內Foo
我會檢查測試功能是否存在等符合下列名稱模式的所有屬性
test<property name>Diffable
即:
class Foo : Diffable {
var title: String
var color: UIColor
var tag: Tag
}
我會檢查Foo_Tests_Diffable
func testTitleDiffable {
// Test
}
func testColorDiffable {
// Test
}
func testTagDiffable {
// Test
}
如果所有的腳本fin DS都比編譯步驟通預期的測試,否則失敗
但是這種解決方案它的耗時和我不知道如果我能實現它,所以任何的建議是值得歡迎的
嗯,這就是爲什麼你要添加的測試,對不對? ;)如果在所有字段相等的情況下它應該被認爲是相等的,那麼將它聲明爲'struct'是一個好習慣。 – redent84
當然,你可以編寫測試來檢查兩個值是否相等,但這裏的問題是這可能很容易中斷。 您的項目中有一個結構,六個月後另一位開發人員將該屬性添加到該結構中。假設他忘記將這個財產加入平等。平等仍然有效,測試通過,但只有該屬性更改時,您的應用纔會中斷。 我的問題是,有一種方法可以避免這個問題? –
請擴大您的問題標題和正文,以將您的評論納入考慮範圍。出於某種原因,評論對我來說是隱藏的,我寫了一個對你沒用的答案。 – CloakedEddy