gpt4 book ai didi

scala - 将 key 传递给集成测试

转载 作者:行者123 更新时间:2023-11-28 21:19:14 24 4
gpt4 key购买 nike

我有一个 sbt 项目,我正在为其编写集成测试。集成测试部署项目中定义的 API。我需要 sbt 的项目版本,以便部署已发布到远程存储库 (x.x.x-SNAPSHOT) 的相应版本的 API。部署后,我将对其运行集成测试。

有没有办法将 Keys 从 sbt 传递给单元测试类?我正在使用 Scalatest 和 sbt 1.2.7

最佳答案

如果您在 fork 的 JVM 中运行单元/集成测试,则可以通过系统属性将版本传递给该 JVM:

Test / fork := true

Test / javaOptions += s"-Dproject.version=${version.value}"

根据您设置单元测试的方式更改范围(您可能需要使用不同的配置甚至特定任务)。

如果您不想在 fork 的 JVM 中运行测试,您可以在运行测试之前使用以下设置来设置系统属性:

Test / testOptions += Tests.Setup(() => sys.props += "project.version" -> version.value)

在任何一种情况下,您都应该在测试中访问 project.version 系统属性以获取版本号:

val version = sys.props("project.version")

或者,您可以生成一个文件并将其放入生成的资源目录中,并从那里加载版本号:

// build.sbt
Test / resourceGenerators += Def.task {
val versionFile = (Test / resourceManaged).value / "version.txt"
IO.write(versionFile, version.value)
Vector(versionFile)
}

// your test
val is = getClass.getClassLoader.getResourceAsStream("version.txt")
val version = try {
scala.io.Source.fromInputStream(is).mkString
} finally {
is.close()
}

关于scala - 将 key 传递给集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54153195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com