簡體   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