Scala 为特定测试设置配置值

标签 scala testing config

我有一个reference.conf 文件,它将配置值指定为

prop {
    type = 2
}

我有 scala 测试类,并且在它下面有一些测试。 我希望这个配置值对于所有测试都保持相同,除了一个测试要求它为 3 之外。 为一项特定测试加载不同配置值的最佳方法是什么?现在,配置值会自动加载,因为我扩展了 ScalatestRouteTest。

那么我如何制作一个专门用于该测试的配置文件(或字符串),并通过在加载配置时指定它来加载它

最佳答案

如果您可以控制 Config 对象(因为它可能作为参数传递),您可以覆盖 config 中的某些值:

val config = ConfigFactory.load.withValue(
    "prop.type",
    ConfigValueFactory.fromAnyRef(5)
).resolve()

如果任何其他属性依赖于 prop.type,则需要调用 resolve,例如:

prop.type2 = ${prop.type} + 1

您还可以使用系统属性,因为它们直接映射到配置中的值。

这意味着您可以在测试开始时执行类似的操作:

System.setProperty("prop.type", 5.toString)
ConfigFactory.invalidateCaches()

当然,由于以编程方式更改系统属性不是线程安全的,因此它不适合生产代码,而仅适合测试。

关于Scala 为特定测试设置配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60733097/

相关文章:

user-interface - Scala 和 Swing GUI 应用程序

java - 当从 Collection 生成源时,Flink 不进行检查点,BucketingSink 会将文件置于挂起状态

python - 如何在 Django 中发送成功完成测试的电子邮件

python - pytest.ini 值未正确设置

Java 编译速度 vs Scala 编译速度

testing - 在 Lotus Notes 8.5 上自动测试

flash - QTP for Flash - 有什么有用的插件推荐吗?

config - 手动启动 Spinnaker Pipeline 后失败

c++ - 如何获取libtool构建的库?

scala - 在单独的执行上下文中运行断言的安全性