我有一个项目,我正在使用Slick为我的关系数据建模。我写了几个利用H2数据库的单元测试。我已经集成了一个CI管道,它在每次提交到我的主分支时都会破坏单元测试!
我正在使用sbt作为我的构建工具,我从构建日志中看到的是它包含带有DEBUG消息的日志行的加载和加载。这些消息是由底层的Slick库编写的,我绝对想要摆脱它们。我已经尝试了几种方法,但似乎没有一种方法可以对那些DEBUG日志语句使用。
我的项目是一个基于Play Framework的Web项目,这里是我在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
)
我尝试了以下内容:
将build.sbt中的logLevel设置为INFO
logLevel:= Level.Info
不幸的是,没有任何效果!
我使用了一个如下所示的logback.xml:
<logger name="scala.slick" level="INFO" />
<logger name="play" level="INFO" />
<logger name="application" level="INFO" />
<logger name="akka" level="INFO" />
并在运行单元测试时使用以下命令:
sbt -Dlogger.resource=conf/logback.xml clean coverage test coverageReport
但奇怪的是,这根本没有任何影响,因为我仍然看到那些烦人的DEBUG声明!我正在使用Play Framework 2.5.9!
答案 0 :(得分:1)
好的,这就是我为摆脱Slick的DEBUG语句所做的工作:
将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"
在build.sbt中添加了以下内容:
javaOptions in Test +="-Dlogger.file=conf/logback.xml"
确保我的应用程序的conf /文件夹中有一个logger.xml! 请注意这个文件应该被称为 logback.xml ,或者应该以 logback-test.xml 之类的logback开头,否则它不起作用!
这是我在运行单元测试时调用我的sbt的方式:
sbt clean test