0

我有一堆集成测试。我想要一个有一些测试使用的实用方法的类。我开始将实用程序方法全部设为静态,并且很容易从测试中获取它们的句柄。

但是,我需要实用程序类能够获取 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 字段设为服务会更好还是我做错了什么?

4

1 回答 1

5

您可以使用静态方法保留实用程序类,并grailsApplication通过Holders类进行访问:

def grailsApplication = Holders.grailsApplication
于 2013-08-28T16:11:02.907 回答