тестовое приложение Grails для вывода на консоль - PullRequest
37 голосов
/ 07 февраля 2010

Я новичок в Граале, пришедший из Джанго.

Используя разработку, основанную на тестировании, я привык писать тесты, а затем и реальные функциональные возможности. Что для меня хорошо, так это написать тест, запустить функцию с некоторыми выходными данными отладки, чтобы увидеть это состояние переменных, пока не пройдет модульный тест, а затем переместить выходные данные отладки.

В grails 'grails test-app' выходные данные 'log.debug' и 'println' не записываются на консоль и не включаются в отчеты.

Документация указывает на использование mocklogging, которое должно выводить вызовы log.debug на консоль, но, используя grails 1.2.1, я не вижу никакого вывода.

Может кто-нибудь, пожалуйста, дайте мне знать, как увидеть вывод 'println' или 'log.debug' в консоли, чтобы ускорить мою разработку?

Ответы [ 4 ]

78 голосов
/ 08 февраля 2010

Добавьте ключ -echoOut в тестовое приложение Grails, это новое в версии 1.2 :

grails test-app -echoOut

Существует также ряд других полезных переключателей в тестовом приложении, в том числе:

echo System.err сообщения:

grails test-app -echoErr

принудительная очистка перед запуском тестов (без выполнения grails clean && grails test-app):

grails test-app -clean

запускать только юнит-тесты:

grails test-app unit:

запускать только интеграционные тесты:

grails test-app integration:

запуск в определенной среде:

grails -Dgrails.env=production test-app

запускать тесты только для определенного класса тестов (например, com.foo.MyControllerTests), не забудьте исключить суффикс «Тесты»:

grails test-app com.foo.MyController

перезапускать только те тесты, которые не прошли при последнем запуске тестов

grails test-app -rerun
5 голосов
/ 08 февраля 2010

Для просмотра операторов log.debug необходимо добавить следующее в раздел log4 файла grails-app / conf / Config.groovy :

log4j = {
   ...
   ...
   ...
   debug 'grails.app'
}
3 голосов
/ 27 апреля 2011

Одна вещь, которая также может вам помочь, это:

Убедитесь, что ваш Config.groovy настроил log4j:


import grails.util.GrailsUtil

if (GrailsUtil.environment == 'test') {
    log4j = {

        appenders {
            // %d{yyyyMMdd.HHmmss.SSS} %r [%t] %-5p %c %x - %m%n
            console name:'a1', layout:pattern(conversionPattern: '%d{yyyyMMdd.HHmmss.SSS} %r [%t] %-5p %c %x - %m%n')
        }

        root {
            info    'a1'
            additivity = true
        }

        // debug  'org.springframework.security'

        error   'org.codehaus.groovy.grails.web.servlet',  //  controllers
                'org.codehaus.groovy.grails.web.pages', //  GSP
                'org.codehaus.groovy.grails.web.sitemesh', //  layouts
                'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
                'org.codehaus.groovy.grails.web.mapping', // URL mapping
                'org.codehaus.groovy.grails.commons', // core / classloading
                'org.codehaus.groovy.grails.plugins', // plugins
                'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
                'org.springframework',
                'org.hibernate',
                'org.apache',
                'grails.util.GrailsUtil',
                'grails.app.service.NavigationService',
                'org.quartz',
                'net.sf.ehcache'

        fatal   'NotificationJob'


        warn    'org.mortbay.log',
                'groovyx.net.ws',                    // Web services too noisy with INFO statements
                'org.apache.cxf.endpoint.dynamic'    // Web services too noisy with INFO statements

        info    'org.springframework.security'

        debug   'grails.app.controller.TroublesomeController'
    }
}


В вашем тесте сделайте следующее:


import org.slf4j.Logger
import org.slf4j.LoggerFactory

class HandoffTests extends GroovyTestCase {
    Logger log = LoggerFactory.getLogger(HandoffTests)

   ... your tests ...
}

Если вы сделаете это, журнал будет вести себя почти так же, как и в объектах домена, службы и контроллера, где Grails автоматически вводит его вам. Я понятия не имею, почему они не вводят автоматически в тестах ...

0 голосов
/ 27 января 2016

Другой ответ о добавлении конфигурации log4j в Config.groovy важен

debug 'grails.app'

Но также убедитесь, что на тестируемых вами модулях включена регистрация.

Например, если вы увидели какую-то ошибку, подобную этой, из вашего теста

| Failure:  write a GFF3 of a simple gene model(org.company.YourAppIntegrationSpec)

и журнал отладки не отображается, возможно, вам также понадобится добавить протокол для вашего пакета

debug 'org.company'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...