3
A
回答
9
與Java中的靜態相同 - 爲了測試目的,對象引用很難交換,因此除了無副作用的無狀態實用方法(例如Math.min,Math.max)之外,您通常希望避免它們。就像Java靜態一樣,持有狀態的對象使得測試特別困難。
儘管Scala對象比Java靜態有一個優點,您可以讓對象擴展一些超類型並通過該接口引用。然後,你可以注入該對象到您的客戶端類的構造函數,所以你的客戶得到更多的可測試:
object MyRunnable extends Runnable {
def run() { }
}
class Client(r: Runnable) {
// ..
}
new Client(MyRunnable)
new Client(mock[Runnable]) // you can substitute the object with a mock for tests
用普通的Java靜態的,那是不可能的。你可以用Java中的單例做類似的事情(與Scala對象相似)。
3
通常,使用'object'類聲明的Scala單例實例比Java靜態方法更適合測試,主要是因爲它們能夠實現特徵並擴展其他類,因此適合典型的面向對象測試範例。
現在,如果您碰巧在單例對象中做了一些不幸的事情,比如存儲可變狀態,您將遇到與測試Java單例時相同的各種問題。當然,有一個簡單的解決方案:永遠不要在對象的主體中使用「var」。這是「絕不使用var,period」的高級建議的一個微不足道的專業化。
相關問題
- 1. 測試對象
- 2. 如何測試Java對象是否是scala中的枚舉?
- 3. 單元測試Scala
- 4. 測試對象內部和對象
- 5. 簡單測試使用Scala測試1.2
- 6. lodash如何測試對象
- 7. Rspec測試重用對象
- 8. PHP實現測試對象
- 9. RSpec測試時間對象
- 10. 單元測試域對象
- 11. 測試對象是JKArray
- 12. 測試Pyodbc連接對象
- 13. 單元測試值對象
- 14. 測試對象的更改
- 15. 使用instanceof測試對象
- 16. javascript測試對象屬性
- 17. 測試jQuery-DataTables API對象
- 18. RSPEC測試和Ruby對象
- 19. 從對象測試事件
- 20. 錯誤而測試Tensorflow對象檢測
- 21. SBT/Scala和集成測試
- 22. maven-scala BDD測試與maven
- 23. 嘲笑scala對象
- 24. 卸載Scala對象
- 25. 如何測試對於PowerPoint SlideShowWindow對象?
- 26. Scala伴侶對象與Vs. Scala的新對象類
- 27. 測試返回對象的junit測試用例
- 28. 組件已經測試時測試複合對象 - >冗餘?
- 29. 單元測試:測試父對象方法有意義嗎?
- 30. 如何在測試中創建測試對象?