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. 如何在测试中创建测试对象?