Grails面试试题:测试篇

Tomás Lin在其博客中公布了一套面试Grails开发人员的题目,本站将陆续公布问题的答案。今天公布的是测试部分的试题回答。

测试

  • 在单元测试中如何添加配置项?
  • import org.codehaus.groovy.grails.commons.ConfigurationHolder
    //添加配置项
    mockConfig '''
        you.test.configitem = "groovyq"
        '''
    //获取配置项
    ConfigurationHolder.config.you.test.configitem
     
  • 请解释一下单元测试中mockDomain()的作用。还有其他做法可以替代这个方法么?
  • 在单元测试时,可以使用这个方法对Domain Class 进行Mock,用于模拟Domain Class。替代用法是使用mockFor。

  • Grails支持4中测试类型,请简单描述一下。
    • unit:单元测试类型
    • integration:集成测试类型
    • spock:这是Spock插件添加的测试类型,可用于unit、integration和functional测试阶段。
    • 自定义:可自定义测试类型,具体参见Custom Grails Test Types/Phases
  • 我想在测试中模拟一个发送给Controller的XML文件,该怎么做?
  • controller.request.contentType = 'text/xml'
    controller.request.contents = '''
        <?xml version="1.0" encoding="ISO-8859-1"?>
        <book>
            <title>The Stand</title>
            ...
        </book>
    '''.getBytes() 
    
    
  • applyTemplate方法是干什么用的?在测试中使用它的目的是什么?
  • 该方法可以直接获得标签库的结果,可对页面元素进行测试,通常用于集成测试。

  • 什么是页面对象?哪个Grails插件提供了页面对象的支持?
  • 页面对象表示应用中特定的页面,其中定义了方法和属性,以便于测试与页面进行交互。

    Selenium RC插件提供了页面对象的支持。关于它的使用,请参见本站的用Selenium RC插件测试远程应用

  • 我想将测试结果显示在Console中,该怎么做?
  • 缺省况下,Grails不会在控制台上输出测试类中的log.info/print/println,如果希望显示,可以使用-echoOut和-echoErr参数,用法如下:

    grails test-app -echoOut -echoErr
    
  • 假如,我想在测试中执行one single method,该怎么做?
  • //测试SimpleControllerTest中的testLogin方法
    grails test-app SimpleController.testLogin

    『编者注』:one single method这里提供的用法有误。

关于Grails的测试细节,亦可参见本站的Grails 1.2参考文档速读(17):测试

By huwh - Posted on 08 三月 2011