首页 > 解决方案 > 在 Java 中的单元测试期间无法禁用 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

标签: javaspringspring-cloud-vault-config

解决方案


我昨天遇到了完全相同的问题。该问题已在此问题中解决:Caused by: java.lang.IllegalArgumentException: Token (spring.cloud.vault.token) must not be empty - Hashicorp Vault

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


推荐阅读