我正在尝试创建一个H2数据库以用于测试。出于某种原因,即使添加了适当的注释,它的行为也好像看不到(或看不到)应该创建架构的架构文件,然后链接到其中具有数据库结构的其他yaml文件。然后,当它要加载测试数据时,出现一个错误,即未找到表XYZ。
我正在使用TestPropertySource将spring.liquibase.change-log值设置为schema.xml文件。该文件在那里并且存在。我已将所有内容与已知有效的其他项目进行了比较,并且没有显着差异。我已将其从内存数据库更改为文件数据库,以便可以使用查看器进行检查,并且它只是一个空数据库,没有架构表。我什至尝试将属性值从schema.xml更改为chuggachugga.xml ...,这应该导致文件未找到错误-它没有。这使我相信注释根本没有被使用或激活。我觉得我缺少一些简单的东西。我对各种事物进行了许多搜索,关于解决方案的问题似乎与我的情况不符,或者我发现的都是快乐路径示例。
import org.springframework.boot.autoconfigure.ImportAutoConfiguration
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.context.TestPropertySource
import org.unitils.database.annotations.Transactional
import org.unitils.database.util.TransactionMode
import spock.lang.Specification
@ContextConfiguration(classes = [DocGenRepoTestConfiguration])
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ImportAutoConfiguration([LiquibaseAutoConfiguration])
@TestPropertySource(properties = [
'debug=true',
'spring.liquibase.change-log=classpath:liquibase/schema.xml',
'spring.liquibase.contexts=!partitioned',
'spring.datasource.url=jdbc:h2:file:/Users/me/dev/github/c/my-app/my-module/src/test/data:sampletest;DB_CLOSE_DELAY=-1;MODE=PostgreSQL;DB_CLOSE_ON_EXIT=FALSE'])
@Transactional(TransactionMode.DISABLED)
class MyClassTestBase extends Specification {
}
这是实现类:
import org.junit.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.CommandLineRunner
import org.unitils.dbunit.annotation.DataSet
import org.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy
import spock.lang.Unroll
import spock.unitils.UnitilsSupport
@UnitilsSupport
@DataSet(
value = ['dbunit/..../repository/SampleData.xml'],
loadStrategy = CleanInsertLoadStrategy
)
class MyClassTestCaseTest extends MyClassTestBase {
期望应该找到并执行该模式文件,从而创建我的数据库结构,以便可以将其用于测试。但是我不确定为什么不是这样。好像根本看不到注释。我还尝试过更改schema.xml文件中的设置,只是看它是否会导致发生错误...与以前相同...没有任何结果...相反,我遇到了与之前相同的错误:“表找不到“ XYZ” ...” ...闷闷不乐。