2017-08-14 1 views
0

J'ai un projet dans lequel j'utilise Slick pour modéliser mes données relationnelles. J'ai écrit quelques tests unitaires qui exploitent la base de données H2. J'ai intégré un pipeline CI qui lance les tests unitaires sur chaque validation de ma branche maître! J'utilise sbt comme outil de construction et ce que je vois à partir des logs de construction, c'est qu'il contient des charges et des charges de lignes de journal avec des messages DEBUG. Ces messages sont écrits par la bibliothèque Slick sous-jacente et je veux définitivement m'en débarrasser. J'ai essayé plusieurs approches, mais aucune ne semble prendre effet contre ces instructions de l'armée de DEBUG.Slick 3.0 Éviter la journalisation excessive lors des tests unitaires

Mon projet est un projet basé sur le Web Framework Play et voici ce que j'ai que ma dépendance dans mon build.sbt:

libraryDependencies ++= Seq(
    ws, 
    "io.monix" %% "monix" % "2.1.0", 
    "com.typesafe.slick" %% "slick" % "3.2.0", 
    "com.typesafe.scala-logging" %% "scala-logging" % "3.4.0", 
    "org.scala-lang.modules" % "scala-async_2.11" % "0.9.6", 
    "com.zaxxer" % "HikariCP" % "2.4.1", 
    "com.typesafe" % "config" % "1.3.1", 
    "mysql" % "mysql-connector-java" % "5.1.26", 

    // test 
    "com.typesafe.akka" %% "akka-testkit" % "2.5.2" % Test, 
    "org.scalatest" %% "scalatest" % "3.0.1" % Test, 
    "com.h2database" % "h2" % "1.4.186" % Test, 
"org.scalatestplus.play" %% "scalatestplus-play" % "1.5.0" % Test 
) 

J'ai essayé les éléments suivants:

  1. Régler le logLevel dans build.sbt à INFO

    logLevel: = Level.Info

Malheureusement cela n'a eu aucun effet!

  1. J'ai utilisé un logback.xml qui ressemble à ceci:

    <logger name="scala.slick" level="INFO" /> 
    <logger name="play" level="INFO" /> 
    <logger name="application" level="INFO" /> 
    <logger name="akka" level="INFO" /> 
    

et utilisé la commande suivante quand je exécuter mes tests unitaires:

sbt -Dlogger.resource=conf/logback.xml clean coverage test coverageReport 

Mais bizarrement, cela n'a eu aucun effet car je continue à voir ces déclarations DEBUG ennuyeuses! J'utilise Play Framework 2.5.9!

Répondre

1

Ok, donc ce que je l'ai fait pour se débarrasser des déclarations de DEBUG de Slick:

mes dépendances Modified build.sbt à:

// Dependencies needed for Slick 
    "com.typesafe.slick" %% "slick" % "3.2.0", 
    "org.slf4j" % "slf4j-nop" % "1.6.4", 
    "com.typesafe.slick" %% "slick-hikaricp" % "3.2.0" 

ajouté ce qui suit à mon build.sbt:

javaOptions in Test +="-Dlogger.file=conf/logback.xml" 

Et assurez-vous qu'il existe un fichier logger.xml dans le dossier conf/de mon application! S'il vous plaît noter que ce fichier doit être appelé logback.xml, ou devrait commencer avec logback comme logback-test.xml sinon ça ne fonctionne pas!

Voilà comment j'appelle mon SBT lors de l'exécution des tests unitaires:

sbt clean test 
+0

Lorsque vous mettez logback-test.xml pour tester classpath, comme à src/test/ressources, vous ne l'avez même pas d'ajouter l'option logger.file, le fichier doit être trouvé automatiquement. –