gpt4 book ai didi

java - Spring Boot 2.0 JNDI 属性值未从应用程序测试属性文件加载

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:55 26 4
gpt4 key购买 nike

我正在尝试运行在 application-test.properties 文件中配置的测试用例和 jndi 属性

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration
@TestPropertySource("classpath:/application-test.properties")
public class CheckingServiceTest {

属性文件中的一个配置

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://xyz:4447,remote://xyz:4447
java.naming.security.principal=qaappmq
java.naming.security.credentials=xyz123
jms.username=qaappmq
jms.password=ixyz123
jboss.naming.client.ejb.context=true

在Xml配置文件中

<bean id="JNDITemplate" class="org.springframework.jndi.JndiTemplate">
<constructor-arg name="environment">
<props>
<prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
<prop key="java.naming.provider.url">${java.naming.provider.url}</prop>
<prop key="java.naming.security.principal">${java.naming.security.principal}</prop>
<prop key="java.naming.security.credentials">${java.naming.security.credentials}</prop>
<prop key="jboss.naming.client.ejb.context">${jboss.naming.client.ejb.context}</prop>
</props>
</constructor-arg>
</bean>

在运行测试用例时抛出

Caused by: java.lang.ClassNotFoundException: ${java.naming.factory.initial}
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672)
... 92 common frames omitted

尝试直接将静态值放入 bean 初始化中,它工作正常,甚至应用程序也可以使用 application.properties 中提到的默认配置正常工作。

问题:属性值未在 XML 配置文件中初始化

最佳答案

添加@ActiveProfiles("test")到你的测试类

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration
@TestPropertySource("classpath:/application-test.properties")
@ActiveProfiles("test")
public class CheckingServiceTest {

关于java - Spring Boot 2.0 JNDI 属性值未从应用程序测试属性文件加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com