我有一堆集成测试.我想要一个具有测试使用的实用方法的类.我开始将实用程序方法全部静态化,并且很容易从测试中获得它们的句柄.
但是,我需要实用程序类才能获得grailsApplication.confg的句柄,所以我可以引入一些配置.为此,由于实用程序类不是服务,我创建了类实现ApplicationContextAware.这意味着我必须基于静态方法实例.很公平.
为了使它成为ApplicationContextAware,我实现了接口,我这样做:
class TestUtils {
def grailsApplication
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
// TODO Auto-generated method stub
this.grailsApplication = grailsApplication
}
...
Run Code Online (Sandbox Code Playgroud)
但这永远不会被称为意味着我的本地grailApplication ref永远不会被设置.
如果我只是将这个TestUtility字段作为服务或者我做错了什么,这样会更好吗?
您可以使用静态方法保留实用程序类,并grailsApplication通过Holders类访问:
def grailsApplication = Holders.grailsApplication
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |