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插件