java - 在 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
解决方案
我昨天遇到了完全相同的问题。该问题已在此问题中解决: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 文件中。
推荐阅读
- python - 使用不同颜色绘制多个函数,包括导数
- powershell - 在 powershell 脚本中添加空行会产生错误
- java - HTTP 响应没有给出输出
- python - 将行中的数据转置为列
- squish - 如何在 squish 中加速工作空间的构建?
- android - 将个人位置添加到 Google Place 自动完成列表
- django - 无法为 saleor 框架 + python + django 更新 svg 文件
- android - Android O 中的 OnTaskRemoved
- android - Dagger 2 + MVP - 分配给多个片段的单个演示者
- apache - Apache Bench POST:是否可以从字符串或标准输入中读取,而不是从文件中读取?