我有一堆集成测试。我想要一个有一些测试使用的实用方法的类。我开始将实用程序方法全部设为静态,并且很容易从测试中获取它们的句柄。
但是,我需要实用程序类能够获取 grailsApplication.confg 的句柄,以便我可以引入一些配置。为此,因为实用程序类不是服务,所以我使该类实现ApplicationContextAware
。这意味着我必须使静态方法基于实例。很公平。
为了使它成为ApplicationContextAware,我实现了接口并且我做了:
class TestUtils {
def grailsApplication
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
// TODO Auto-generated method stub
this.grailsApplication = grailsApplication
}
...
但这永远不会被调用,这意味着我的本地 grailApplication ref 永远不会设置。
如果我只是将此 TestUtility 字段设为服务会更好还是我做错了什么?