我想在我的Scala项目中编写集成测试用例,该项目使用Play框架。我正在尝试示例化一个具有所有依赖项的服务类,例如
class ATest extends AsyncFlatSpec with MockitoSugar{
implicit val d = org.json4s.DefaultFormats
implicit val tempEc = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10))
val logger = CustomLogger.getLogger(this.getClass.getCanonicalName)
val testConfig = ConfigFactory.load("test.conf")
val configuration = Configuration(testConfig)
println(configuration.keys)
val app1: Application = new GuiceApplicationBuilder().configure(configuration).build
val service = Application.instanceCache[AService].apply(app1)
我面临的问题是,当我从test.conf
打印正确的密钥时,但当调用val service = Application.instanceCache[DwSqsService].apply(app1)
时,它选择application.conf
。为什么会这样呢?
我甚至尝试了-Dconfig.resource=test.conf
标记。尽管如此,application.conf
仍被选中。我不能找到为什么会有这种行为。有什么想法吗?
添加更多信息:我尝试将此代码添加到我的构建中。sbt、javaOptions in Test += "-Dconfig.file=conf/test.conf"
和javaOptions in Test += "-Dconfig.file=test.conf"
我也试过使用命令行sbt coverage test coverageReport -J-Xmx6g -Dconfig.file=test.conf
,我启动了我的应用程序,但在测试中不起作用
1条答案
按热度按时间idfiyjo81#
您可以将SBT配置设置为在测试模式下加载
test.conf
文件。当您Play Java项目使用
sbt test
运行时,它会将您的test.conf
加载到conf
文件夹中。请注意,该代码将在SBT 1.4+版本上使用。如果您使用的是较旧的版本,则只需进行调整,因为较旧的版本使用其他语法(可能是
javaOptions in Test ++= Seq("-Dconfig.resource=test.conf")
,但我不确定。