包括外部jar依赖项spring boot test

时间:2017-12-31 07:34:51

标签: java spring maven testing spring-boot

我有春天启动应用程序,它们共享相同的实体层,直到现在所有项目中的实体都被复制了,我对每个模块上的每个都进行了测试。 我将所有实体解压缩为一个独立的maven工件,并且我已将项目中的依赖项添加到新工件中。 除了我无法运行的测试外,一切似乎都能正常工作。 运行测试时出现以下错误:

Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PIM_SECURITIES
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.SchemaManager.getTable(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.ParserDQL.readTableName(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.ParserDQL.readSimpleRangeVariable(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.ParserCommand.compilePart(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.ParserCommand.compileStatements(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.Session.executeDirectStatement(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) ~[hsqldb-2.2.8.jar:2.2.8]

下面是我的春季启动测试类的定义

@ContextConfiguration(classes = {AccountsDao.class, SecuritiesDao.class,  TasksDao.class})
@RunWith(SpringRunner.class)
@DataJpaTest
@Transactional
@ActiveProfiles("test")
public class DalLayerTests extends 
AbstractTransactionalJUnit4SpringContextTests {}

未找到的对象位于实体工件中。

我尝试添加工件以在maven中使用测试范围运行,但它没有帮助。 我试图将它添加到注释@ContextConfiguration(类),但它也没有帮助。

我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您的表名由小写字符组成,则hsqldb将表名更改为大写;这种情况可能是错误的原因,以下是可能提供用户的2个选项: -

  1. 将表名更改为大写。
  2. 将其隐藏为大写的表名称过程,请参阅here

答案 1 :(得分:1)

我终于找到了如何使spring上下文在测试中加载我的实体。

在制作中,我有以下属性文件: 的 entitymanager.packagesToScan = com.pim

出于某种原因,在测试类中使用注释添加属性: @TestPropertySource(properties = {" entitymanager.packagesToScan = com.pim.common"})

没有任何影响,在课堂上添加以下注释解决了这个问题:

@EntityScan(basePackages =" com.pim")