我决定通过 H2 运行测试。继承所有其他测试的抽象测试的注释:
@RunWith(SpringRunner.class)
@SpringBootTest
@EnableJpaRepositories
@ActiveProfiles("dev")
public abstract class AbstractTest {
}
在 test/resources 中application-dev.yml,当“dev”配置文件处于活动状态时,应该拾取一个文件:
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/streamcast;DB_CLOSE_ON_EXIT=FALSE;IFEXISTS=TRUE;DB_CLOSE_DELAY=-1;
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate.dialect: org.hibernate.dialect.H2Dialect
hibernate.temp.use_jdbc_metadata_defaults: false
profiles:
active: dev
server:
port: 8080
引发以下异常:
Caused by: org.h2.jdbc.JdbcSQLException: Схема "information_schema" не найдена
Schema "information_schema" not found; SQL statement:
select SEQUENCE_CATALOG, SEQUENCE_SCHEMA, SEQUENCE_NAME, INCREMENT from information_schema.sequences [90079-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.command.Parser.getSchema(Parser.java:701)
at org.h2.command.Parser.getSchema(Parser.java:707)
at org.h2.command.Parser.readTableFilter(Parser.java:1388)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:2138)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2287)
at org.h2.command.Parser.parseSelectSub(Parser.java:2133)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1946)
at org.h2.command.Parser.parseSelect(Parser.java:1919)
at org.h2.command.Parser.parsePrepared(Parser.java:463)
at org.h2.command.Parser.parse(Parser.java:335)
at org.h2.command.Parser.parse(Parser.java:307)
at org.h2.command.Parser.prepareCommand(Parser.java:278)
at org.h2.engine.Session.prepareLocal(Session.java:611)
at org.h2.engine.Session.prepareCommand(Session.java:549)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247)
at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorH2DatabaseImpl.extractMetadata(SequenceInformationExtractorH2DatabaseImpl.java:37)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.initializeSequences(DatabaseInformationImpl.java:65)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.<init>(DatabaseInformationImpl.java:59)
at org.hibernate.tool.schema.internal.Helper.buildDatabaseInformation(Helper.java:132)
... 77 more
它在数据源设置中吗?告诉我出了什么事?
在运行测试时,您需要通过指定以下属性来创建具有休眠功能的表:
或者您可以通过在资源文件夹中创建包含必要表的schema.sql文件来自己完成。
PS 我还建议您使用 @DataJpaTest 注释而不是 @SpringBootTest 如果您只是要测试持久性。@SpringBootTest 引发了整个上下文,包括控制器、服务、标准 spring bean 等。