|
1
1
那很容易。不要使用单例或其他可变静态。通过构造函数传入服务(或获取服务的方法),即“Parameterise from Above”。 |
|
|
2
1
为单元测试创建模拟服务有很多选项。其中的大多数名称中都有“mock”,并且都是执行此类操作的框架。以下是一些基于Java的模拟工具:
另一个选项是修改服务本身,以允许为测试提供备用实现。尽管如此,您可能没有修改服务或接口的特权。 就我个人而言,我更喜欢使用动态语言来进行模拟。我发现你可以得到很多你需要的能力,没有一个花哨的框架。我经常使用groovy编写单元测试。有关使用Groovy闭包而不是mock的更多信息,请参见本页: http://groovy.codehaus.org/Developer+Testing+using+Closures+instead+of+Mocks |
|
|
3
1
Mockito . 太棒了。作为一个Java新手,完成教程需要一些时间,但这是非常值得努力的。 然而,正如帕斯卡指出的, Mockito cannot mock static methods |
|
|
4
0
如果可能的话,按照Tom Hawtin的建议使代码更易于测试。为可测试性设计代码实际上是一个很好的实践,所以这是一个好主意。一些技巧:消除静态方法(从而避免单例),提供允许注入依赖项的setter或构造函数。 如果不是(例如,它是不能更改的遗留代码),则使用模拟框架 . 我在想 JMockit 或 Powermock (后者扩展了EasyMock和Mockito,并提供了 mock static methods ). 我最近尝试了Powermock,使用它很有乐趣。 |
|
|
S qasem · Android内存性能 8 年前 |
|
|
R83nLK82 · 在单例设计模式上引发IOException 8 年前 |
|
|
hal · 两个课程有什么区别?他们的工作方式不同吗? 8 年前 |
|
Jaquarh · 如何在不使用DI的情况下实例化父类 8 年前 |
|
|
Deepanshu · 基于PHP的Web应用程序中的单例对象状态 8 年前 |
|
|
dicle · 视图控制器中的依赖项注入 8 年前 |
|
|
Kozuki · 如何在生产代码中考虑单例? 8 年前 |