为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕盖茨4494581 2021-11-11 17:40:14
我正在尝试运行 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.InitialContextFactoryjava.naming.provider.url=remote://xyz:4447,remote://xyz:4447java.naming.security.principal=qaappmqjava.naming.security.credentials=xyz123jms.username=qaappmqjms.password=ixyz123jboss.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>尝试将静态值直接放入 bean 初始化中,它工作正常,甚至应用程序在 application.properties 中提到的默认配置下也能正常工作。问题:属性值未在 XML 配置文件中初始化
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

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


@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)

@ContextConfiguration

@TestPropertySource("classpath:/application-test.properties")

@ActiveProfiles("test")

public class CheckingServiceTest {


查看完整回答
反对 回复 2021-11-11
?
萧十郎

TA贡献1815条经验 获得超12个赞

尝试将您的 TestPropertySource 注释更改为:

@TestPropertySource(locations = "classpath:application-test.properties")


查看完整回答
反对 回复 2021-11-11
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

从项目中删除 XML 配置并尝试创建每个 bean 注释驱动。


使用@Value 为每个变量赋值或使用创建单独的类


 @Configuration

 public class TestConfiguration {


@Bean(name = "publishJNDITemplate")

public JndiTemplate publishJNDITemplate() {

    final Properties environment = new Properties();

    environment.put(Context.INITIAL_CONTEXT_FACTORY, factoryIntial);

    environment.put(Context.PROVIDER_URL, providerUrl);

    environment.put(Context.SECURITY_PRINCIPAL, securityPrincipal);

    environment.put(Context.SECURITY_CREDENTIALS, securityCredentials);

    environment.put(narfeedTopics, destination);

    return new JndiTemplate(environment);

}

}


查看完整回答
反对 回复 2021-11-11
  • 3 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信