2015-11-27 121 views
2

當您可以表達簡單且定義明確的屬性時,基於屬性的測試是很好的。負面的基於屬性的測試

我在測試解析器的情況下也遇到了「負面屬性」,例如,通過生成無效標識符或縮進敏感語言的不匹配縮進。但是「負面屬性」是一種常見的表達和測試?它意味着編寫生成專門的僞造輸入的生成器。

什麼是一些與解析器無關的負面屬性的現實生活中的例子?

+0

很想聽聽過去一年(自發布以來)在負面財產測試中發展的情況。 – Zac

回答

1

我基本上有同樣的問題。

我已比較詳細,有我所有的思維一起迄今爲止,這是如何可能實現:

Pattern for generating negative Scalacheck scenarios: Using property based testing to test validation logic in Scala

對我們來說,「真實世界」的情況是,我們有大型的數據綁定案例類,而這些案例類具有驗證邏輯(我們使用Wix Accord進行驗證)。爲了徹底測試驗證邏輯,我們需要創建一個對象,使其一個屬性失效,並查看validate(o)是否失敗。然後重複對象上的每個屬性。

我們還遇到了特定情況下需要無效的特定情況。例如,檢查我們的系統是否能夠正確處理無效的ID。這很容易,我們可以使用forAll(someGen)並改變它。實際上,只需v => val invalidV = v copy(id = "badID"),現在對於每個生成的屬性,我都會將其變爲具有錯誤的ID。你當然可以找到更好的球員,但你明白了。

所有這一切都在我的另一篇文章中進行了總結......並且公開徵集「最佳模式」。希望得到一些好主意!

相關問題