37 votes

grails test-app pour la sortie sur console

Je suis nouveau sur le graal, venant de Django.

À l'aide de développement piloté par les tests, je suis habitué à l'écriture de tests et de fonctionnalité réelle. Ce qui fonctionne bien pour moi, pour écrire le test, l'exécution de la fonction avec certains sortie de débogage pour voir que l'état des variables jusqu'à ce que l'unité de test passe, puis en déplaçant la sortie de débogage.

Dans graal le "graal test-app', la sortie du journal.debug " et "println" n'est pas enregistré sur la console, et il n'est pas dans la déclaration soit.

La documentation de point à l'aide de mocklogging, qui devrait sortir le journal.débogage des appels à la console, mais en utilisant graal 1.2.1, je ne voit pas de sortie.

Peut-on s'il vous plaît laissez-moi savoir comment faire pour voir la sortie de "println" ou " journal.debug' dans la console pour accélérer mon développement?

79voto

Ted Naleid Points 13349

Ajouter l'-echoOut passer à graal test-app, ce qui est nouveau dans la version 1.2:

grails test-app -echoOut

Il y a un certain nombre d'autres commutateurs sur test-app, y compris:

echo du Système.tre messages:

grails test-app -echoErr

la force d'un chiffon propre avant l'exécution des tests (sans faire graal clean && graal test-app):

grails test-app -clean

seulement exécuter des tests unitaires:

grails test-app unit:

seulement exécuter les tests d'intégration:

grails test-app integration:

exécuter dans un environnement particulier:

grails -Dgrails.env=production test-app

exécuter des tests uniquement pour un particulier de la classe de test (comme com.foo.MyControllerTests), assurez-vous de laisser de côté les "Essais" de suffixe:

grails test-app com.foo.MyController

réexécutez seulement les tests qui ont échoué la dernière fois que vous avez exécuté vos tests

grails test-app -rerun

5voto

John Wagenleitner Points 6206

Pour voir les instructions log.debug, vous devez ajouter ce qui suit dans la section log4 du fichier grails-app / conf / Config.groovy :

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

3voto

orange80 Points 5822

Une chose qui pourrait aussi vous aider est la suivante:

Assurez-vous que votre Config.groovy configure 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'
    }
}

 

Dans votre test, faites ceci:



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

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

   ... your tests ...
}
 

Si vous faites cela, log se comportera à peu près de la même manière que dans les objets de domaine, de service et de contrôleur, où grails l'injectera automatiquement pour vous. Je ne sais pas pourquoi ils ne s'injectent pas automatiquement dans les tests ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X