Grails:在单元测试中的applicationcontext中设置数据源bean

时间:2017-07-10 10:20:39

标签: junit applicationcontext grails3

我使用的是Grails 3.2.7& 我是单元测试具有以下代码行的方法:

void abc(){
ApplicationContext ctx = Holders.grailsApplication.mainContext
def dataSource = ctx.getBean('dataSource')
}

内部单元测试(JUnit)任何人都可以帮助我:如何设置'数据源' applicationContext中的Bean?

我试过了:

applicationContext.beanFactory.registerSingleton("dataSource", DataSource)

但这不起作用。 谁能在这帮助我?

2 个答案:

答案 0 :(得分:0)

所以,解决方案是:

在Junit Test课程中:

Class TestCl {
    DataSource dataSource

      @Before
      public void setup() {
        defineBeans {
          def bb = new BeanBuilder()
          bb.beans {
            dataSource(BasicDataSource)
          }
        }
        applicationContext.beanFactory.registerSingleton("dataSource", dataSource)
       }
     }

答案 1 :(得分:0)

我建议使用依赖注入来获取dataSource Bean,而不是通过应用程序上下文。

您可以执行以下操作:

Class SampleService {
   def dataSource

   def abc(){
     //do the thing with the dataSource!
   }
}

另外,我认为您需要集成测试而不是单元测试来实际测试持久性逻辑。 See this