Подтвердить что ты не робот

Grails test-app для вывода на консоль

Я новичок в grails, пришедший из Django.

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

В grails "grails test-app" вывод "log.debug" и "println" не записывается в консоль, и он также не находится в сообщении.

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

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

4b9b3361

Ответ 1

Добавьте переключатель -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

Ответ 2

Чтобы просмотреть инструкции log.debug, вам нужно добавить следующее в раздел log4 файла grails-app/conf/Config.groovy:

log4j = {
   ...
   ...
   ...
   debug 'grails.app'
}

Ответ 3

Одна вещь, которая может помочь вам, заключается в следующем:

Убедитесь, что ваш 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 автоматически вводит его для вас. Я понятия не имею, почему они не автоматически вводят в тесты...

Ответ 4

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

debug 'grails.app'

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

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

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

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

debug 'org.company'