程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了测试时使用数据源进行Spring Boot大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决测试时使用数据源进行Spring Boot?

开发过程中遇到测试时使用数据源进行Spring Boot的问题如何解决?下面主要结合日常开发的经验,给出你关于测试时使用数据源进行Spring Boot的解决方法建议,希望对你解决测试时使用数据源进行Spring Boot有所启发或帮助;

您可以在您的application.propertIEs配置文件中添加一个配置文件src/test/resources,Spring Boot会在测试环境中选择这些配置。我想,您application.propertIEs的情况src/main/resources如下:

spring.datasource.jndi-name=some_jndi

JNDI资源将在您的生产环境中使用。对于您的测试环境,可以通过将以下配置添加到测试中来使用MysqL数据库application.propertIEs

spring.datasource.url=jdbc:MysqL://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.Mysql.jdbc.Driver

如我所说,JNDI通过添加测试特定的配置,您可以完全绕开您用于生产的事实。

您可以JNDI使用org.springframework.mock.jndi软件包中提供的功能来模拟资源。例如,通过使SimpleNamingContextBuilder您可以:

SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind("jndi_name", datasourcE);
builder.activate();

当然,另一个选择是Non JNDI在测试环境中使用资源。

解决方法

我正在使用Spring Boot应用程序,并且启用了自动配置功能。主应用程序文件标记为@EnableAutoConfiguration。使用java
config从JNDI查找数据源,并将创建数据源的类标记为@Configuration

我有一个如下的测试课。

@RunWith( SpringJUnit4ClassRunner.class )
@WebAppConfiguration
@ContextConfiguration( classes = Application.class )
public class TestSomeBusiness {}

问题是,当我运行测试用例时,会发生数据源jndi查找,因为测试用例不在服务器环境中运行,所以失败。据我所知,classpath中标记为的类@Configuration已执行,并且数据源查找被调用的原因。

我现在发现的解决方法是使用而不是JNDI查找来创建数据源DriveRMANagerDatasource,这样,即使它不是服务器环境,数据源查找也不会失败。

我的问题是:

1)在Spring Boot应用程序中进行测试时,我们通常如何处理数据源(从JNDI查找时)?

2)有没有一种方法可以在执行测试用例时从调用中排除数据源配置类?

3)我是否应该创建一个嵌入式服务器,以便在执行测试用例时可以完成JNDI查找?

大佬总结

以上是大佬教程为你收集整理的测试时使用数据源进行Spring Boot全部内容,希望文章能够帮你解决测试时使用数据源进行Spring Boot所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。