在Java单元测试期间无法禁用Spring Vault

在Java单元测试期间无法禁用Spring Vault,java,spring,spring-cloud-vault-config,Java,Spring,Spring Cloud Vault Config,我在单元测试中禁用了spring vault。但是,它仍然支持它并在后台运行。这是我的密码。以下代码中是否存在任何问题 @RunWith(SpringRunner.class) @SpringBootTest(properties = "spring.cloud.vault.enabled=false", classes = DummyTest.class) public class DummyTest{ @Test public void g

我在单元测试中禁用了spring vault。但是,它仍然支持它并在后台运行。这是我的密码。以下代码中是否存在任何问题

@RunWith(SpringRunner.class)

@SpringBootTest(properties = "spring.cloud.vault.enabled=false", classes = 
 DummyTest.class)
public class DummyTest{
    
    @Test
    public void getDummyTest() throws Exception{
        assertTrue(true);
    }
    
}
以下是其在控制台中打印的例外情况

Caused by: java.lang.IllegalArgumentException: Token (spring.cloud.vault.token) must not be empty
at org.springframework.util.Assert.hasText(Assert.java:287)
at org.springframework.cloud.vault.config.ClientAuthenticationFactory.createClientAuthentication(ClientAuthenticationFactory.java:108)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration.clientAuthentication(VaultBootstrapConfiguration.java:206)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$1d0bfc2.CGLIB$clientAuthentication$3(<generated>)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$1d0bfc2$$FastClassBySpringCGLIB$$7f75c921.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$1d0bfc2.clientAuthentication(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 99 more
原因:java.lang.IllegalArgumentException:令牌(spring.cloud.vault.Token)不能为空
位于org.springframework.util.Assert.hasText(Assert.java:287)
位于org.springframework.cloud.vault.config.ClientAuthenticationFactory.createClientAuthentication(ClientAuthenticationFactory.java:108)
位于org.springframework.cloud.vault.config.VaultBootstrapConfiguration.clientAuthentication(VaultBootstrapConfiguration.java:206)
在org.springframework.cloud.vault.config.vaultbootstrapcConfiguration$$EnhancerBySpringCGLIB$$1d0bfc2.CGLIB$clientAuthentication$3()上
在org.springframework.cloud.vault.config.vaultbootstrapcConfiguration$$EnhancerBySpringCGLIB$$1d0bfc2$$FastClassBySpringCGLIB$$7f75c921.invoke()中
位于org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
在org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$1d0bfc2.clientAuthentication()上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:154)
... 99多

我昨天遇到了完全相同的问题。这个问题已经解决了:

您的测试类在应用程序上下文中加载,但您得到的错误在引导上下文中抛出
spring.cloud
-属性总是在该上下文中加载。解决方案是在引导上下文中设置
spring.cloud.vault.enabled=false
,例如,您可以将其放入测试资源中的bootstrap.yml文件中