在我的本地计算机上,我加载了一个内存中的h2数据库,以便在安全的环境中启动我的spring启动应用程序,这是属性:
spring.datasource.url: jdbc:h2:mem:DB_TEST;Mode=Oracle
spring.datasource.platform: h2
spring.jpa.hibernate.ddl-auto: none
spring.datasource.continue-on-error: false
spring.jpa.database-platform: org.hibernate.dialect.Oracle10gDialect
然后,在我的src / main / resources中,我有包含本地数据库启动的文件schema-h2.sql。
那很好,但是我还有一些我想要执行的junit测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {
@Autowired
private MyController controller;
@Test
public void myTest(){
controller.doSomething();
}
这也很好,因为可以看到schema-h2.sql。
无论如何,根据我的说法,最好将schema-h2.sql放在src / test / resources中,因为它只能在我的本地环境中使用。这样做也允许maven将它从最终版本中排除,这也很好。
无论如何,如果我把它放在那里测试继续工作......但是主应用程序因为找不到schema-h2.sql而中断了!
如何修改上述属性以指定必须在test / resources文件夹中搜索shema-h2.sql?
由于
答案 0 :(得分:0)
对于普通模式,属性文件放在src / main / resources中, 对于测试方法,src / test / resources文件夹中的属性文件。
通过尝试运行测试类,eclipse运行以.sql结尾的EACH文件(因此包含创建表或插入数据的脚本),它在src / main / resources和src / test / resources下找到。 因此,如果你在两个文件夹中放置一个脚本文件schema.sql(包含一个创建表的脚本:create table ..),你会得到一个“表已经退出”的错误,如果你让jut一个,测试将顺利运行。 如果您在两个文件夹中放置一个脚本文件(在表中插入数据),则将运行这两个脚本。
Youa还可以使用存储库中的@PropertySource("..")
告诉spring在哪里可以找到要使用的属性文件。