Scala 播放2.3.x:多项目,禁用BoneCP
我有一个Scala 播放2.3.x:多项目,禁用BoneCP,scala,testing,playframework,playframework-2.3,specs2,Scala,Testing,Playframework,Playframework 2.3,Specs2,我有一个Play项目和一些子项目。其中一个子项目需要JDBC,因此BoneCP(它访问了MySQLDB) 另一方面,根项目根本不需要JDBC 我的问题是: JDBC在子项目的build.sbt中声明。当我运行所有的测试,在本例中是根项目测试时,BoneCP被初始化,即使子项目中只需要它。它在测试过程中给我带来了一些问题: Configuration error[Cannot connect to database [default]] (Configuration.scala:94) 我是否
Play
项目和一些子项目。其中一个子项目需要JDBC
,因此BoneCP
(它访问了MySQL
DB)
另一方面,根项目根本不需要JDBC
我的问题是:
JDBC
在子项目的build.sbt
中声明。当我运行所有的测试,在本例中是根项目测试时,BoneCP
被初始化,即使子项目中只需要它。它在测试过程中给我带来了一些问题:
Configuration error[Cannot connect to database [default]] (Configuration.scala:94)
我是否可以指定将Play
仅与子项目一起使用JDBC
?或者我可以在根项目中禁用JDBC
或BoneCP
感谢您的回答。对于单元测试,我想说的是创建一个测试实用程序对象,它提供了一个通用的。然后,您可以在单元测试中重复使用此FakeApp。FakeApplication的构造函数参数之一是withoutPlugins,您可以利用它在单元测试期间关闭插件
object MockMyApp extends OurBaseSpec {
val withoutPlugins = Seq(classOf[ReactiveMongoPlugin].getName)
val appWithoutIntegrations = FakeApplication(withoutPlugins = withoutPlugins)
}
例如,在当前的Play应用程序中,我们使用ReactiveMongo,但不希望在单元测试中使用它
object MockMyApp extends OurBaseSpec {
val withoutPlugins = Seq(classOf[ReactiveMongoPlugin].getName)
val appWithoutIntegrations = FakeApplication(withoutPlugins = withoutPlugins)
}
然后,在创建用于单元测试的新应用程序时,我们将引用此MockMyApp.appWithoutIntegrations。在创建FakeApp时,您还可以在其他选项中指定其他配置
从几个链接中,我认为您可能正在寻找创建FakeApp时要设置的其他配置:
dbplugin=disabled
终于明白了
val withoutPlugins=Seq(classOf[ReactiveMongoPlugin].getName)
禁用ReactiveMongo插件的魅力
对于主要问题:
additionalConfiguration=Map(“dbplugin”->“disabled”、“evolutionplugin”->“disabled”)
在测试期间,根本没有
JDBC
。非常感谢你,巴里 你能评论一下你的测试吗?它们只是单元测试还是集成测试?它们中的一些需要BoneCPYep吗?它们中的一些是Unit->根本不需要BoneCP或JDBC。还有一些是集成,需要JDBC。单元在根项目中,集成(与JDBC)在子项目中。对我来说有用的链接:嗨,它似乎适用于ReactiveMongo插件。但是对于dbplugin,我得到了:此时应该有一个数据库插件注册,但看起来它不可用,所以进化将不起作用。请确保正确注册db插件