如何使用已在Spring Boot YML文件中配置的TestContainer工作
我正在尝试使用TestContainers MSSQLServerContainer,但我找不到任何信息如何获取在YML文件中配置的实例MSSQLServerContainer。 我在YML文件中具有类似的配置
site-db:
url: jdbc:tc:sqlserver://localhost:1111;DatabaseName=nameDb;sendStringParametersAsUnicode=false?TC_INITSCRIPT=sql/create_tables.sql
jdbc-url: jdbc:tc:sqlserver://localhost:1111;DatabaseName=nameDb;sendStringParametersAsUnicode=false?TC_INITSCRIPT=sql/create_tables.sql
driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
jndiName: java:comp/env/jdbc/siteDb
username: username
password: password
在运行测试时,
,然后容器也启动,但是我可以获得此容器的实例。如果我尝试编写这篇文章:
@Rule
private MSSQLServerContainer mssqlServerContainer = new MSSQLServerContainer();
那么我会得到新容器
可以从YML文件中配置的TestContainer获得连接的方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您自己将容器实例化为这样的字段时:
您需要使用
mssqlservercontainer.getjdbcurl()
使用@dynamicpropertysource
:但是,因为您正在使用TestContContainers JDBC驱动程序
jdbc:tc:sqlserver://localhost:1111;DatabaseName=nameDb;sendStringParametersAsUnicode=false?TC_INITSCRIPT=sql/create_tables.sql
, this is not necessary, since connecting to the JDBC-URL will automatically spawn a container.如果您需要对容器的程序化访问,我建议您改用
@dynamicpropertysource
方法。When you are instantiating your container yourself as a field like this:
you need to inject the
mssqlServerContainer.getJdbcUrl()
value into Spring using@DynamicPropertySource
:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/DynamicPropertySource.html
However, since you are using the Testcontainers JDBC Driver Proxy approach by specifying
jdbc:tc:sqlserver://localhost:1111;DatabaseName=nameDb;sendStringParametersAsUnicode=false?TC_INITSCRIPT=sql/create_tables.sql
, this is not necessary, since connecting to the JDBC-URL will automatically spawn a container.If you need programmatic access to the container, I'd recommend to use the
@DynamicPropertySource
approach instead.