Gol*_*ish 5 java junit spring tomcat
嗨,我们在tomcat应用服务器上运行了一个spring应用。我想在JUnit中添加与Springboot的集成测试。我现在遇到的问题是嵌入式tomcat服务器未存储我们的数据源,因此无法对其进行查找...如果服务器配置中未定义数据源,则我们的资源中应该有一个后备的“ context.xml”用过的。但是嵌入式tomcat没有读取此配置,我只是不知道如何执行此操作。以下是我的JUnit Test中的失败点,因为它无法在嵌入式tomcat中找到此JNDI-Name:
@Bean
public DataSource dataSource()
{
return new JndiDataSourceLookup().getDataSource("jdbc/myDB");
}
Run Code Online (Sandbox Code Playgroud)
fallback context.xml看起来像这样:
<Context>
<!-- HSQL -->
<Resource name="jdbc/myDB" auth="Container"
type="javax.sql.DataSource" driverClassName="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:mem:mymemdb;shutdown=true" username="SA" password=""
maxTotal="100" maxIdle="5" maxWaitMillis="10000"/>
<Manager pathname=""/>
</Context>
Run Code Online (Sandbox Code Playgroud)
我如何在启动时将此文件推送到嵌入式tomcat中?
Spring Boot 提供了多种方法来外部化您的配置......
您可以在上下文描述符中定义数据源属性tomcat/conf/Catalina/<host>
。
您可以定义您的 jndi 名称:
<Context>
<Parameter name="spring.datasource.jndi-name" value="/pathToYourDatasource" />
</Context>
Run Code Online (Sandbox Code Playgroud)
或者定义数据源:
<Context>
<Parameter name="spring.datasource.url" value="your url" />
<Parameter name="spring.datasource.username" value="your username" />
<Parameter name="spring.datasource.password" value="your password" />
</Context>
Run Code Online (Sandbox Code Playgroud)
甚至定义路径application.properties
并在此处设置您的配置:
<Context>
<Parameter name="spring.config.location" value="/path/to/application.properties" />
</Context>
Run Code Online (Sandbox Code Playgroud)
这种方式不需要以编程方式设置您的硬编码数据源,您可以在以下位置放置另一个数据库配置进行测试src/test/resources/application.properties
:
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5007 次 |
最近记录: |