繁体   English   中英

每次运行测试时如何使用时间戳创建新的测试报告目录并使用 scalatest 和 sbt 保留旧的测试报告

[英]How to create new test report directory with timestamp every time I run a test and keep the old test reports using scalatest and sbt

我正在使用 scalatest 运行一些测试。 现在每次我运行测试时,测试结果都会存储在target/test-reports覆盖之前的测试结果。 我想将结果存储在文件夹名称中带有时间戳的新文件夹中。 就像在target/test-reports/dd-mm-yy-hhmmss文件夹中一样,并保持旧的结果不变。 如何在 build.sbt 中获取时间戳并使用它来制作文件夹名称。

目前我的 build.sbt 看起来像这样:

testOptions in Test ++= Seq(Tests.Argument(TestFrameworks.ScalaTest, "-o"), Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/test-reports"))

请建议如何获取时间戳并在文件夹名称中使用它。

尝试

libraryDependencies += "org.pegdown" % "pegdown" % "1.6.0",
testOptions in Test ++= Seq(
  Tests.Argument(TestFrameworks.ScalaTest, "-o"), 
  Tests.Argument(TestFrameworks.ScalaTest, "-h", s"target/test-reports-$testDirTimestamp")
)

def testDirTimestamp = {
  import java.time.LocalDateTime
  import java.time.format.DateTimeFormatter
  LocalDateTime.now.format(DateTimeFormatter.ofPattern("yyyy-MM-ddHHmmss"))
}

执行sbt test应该在下面创建报告

target/test-reports-2019-07-02074159

我已经想通了。 我们可以在 buld.sbt 中使用变量并使用它来构造目录名称。

val format = new SimpleDateFormat("dd-MM-yy-hhmmss")
val timeStamp : String = format.format(Calendar.getInstance().getTime())
val resultDirectory : String = "target/test-reports/"+timeStamp

testOptions in Test ++= Seq(Tests.Argument(TestFrameworks.ScalaTest, "-o"), Tests.Argument(TestFrameworks.ScalaTest, "-h", resultDirectory))
libraryDependencies +=  "org.pegdown" % "pegdown" % "1.6.0" % "test"

我之前试过这个,但没有用。 原因是每次更改 build.sbt 文件时都需要重新加载 sbt shell,而我之前没有这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM