如何为配置类编写@Bean的junit案例
Posted
技术标签:
【中文标题】如何为配置类编写@Bean的junit案例【英文标题】:How to write junit cases for @Bean for configuration classes 【发布时间】:2022-01-15 01:50:47 【问题描述】:我在@Configuration
类中有以下方法,我需要为此编写JUnit。谁能指导我实现 JUnit 测试用例?
@Bean
@Profile("!test & !local")
@Primary
public DiscoveryClient.DiscoveryClientOptionalArgs getClient()
try
DiscoveryClient.DiscoveryClientOptionalArgs args = new DiscoveryClient.DiscoveryClientOptionalArgs();
args.setAdditionalFilters(Collections.singletonList(new HTTPBasicAuthFilter(this.username, this.password)));
args.setSSLContext(sslContext());
System.setProperty("javax.net.ssl.trustStore", this.truststorePath);
System.setProperty("javax.net.ssl.trustStorePassword", this.trustStorePassword);
return args;
catch (IOException | KeyManagementException | KeyStoreException | NoSuchAlgorithmException | CertificateException e)
throw new IllegalStateException("Unable to instantiate ssl context or authentication", e);
【问题讨论】:
请不要只要求我们为您解决问题。向我们展示您是如何尝试自己解决问题的,然后向我们确切展示结果是什么,并告诉我们您为什么觉得它不起作用。给我们一个关于什么不起作用的明确解释并提供Minimal, Complete, and Verifiable example。阅读How to Ask a good question。请务必参加游览并阅读此内容。 【参考方案1】:首先,考虑您要测试什么。 DiscoveryClient
创建成功?当然。采取务实的立场,在这种情况下我什至会避免使用 Spring:
public class DiscoveryClientConfigTest
@Test
public void testGetClient()
DiscoveryClientConfig config = new DiscoveryClientConfig();
DiscoveryClientOptionalArgs client = config.getClient();
// Assert some state of the client
@Test
public void testGetClient_FailsToCreateClient()
// Whatever exception you expect...
assertThrows(IOException.class, () ->
DiscoveryClientConfig config = new DiscoveryClientConfig();
config.getClient();
);
如果您想在它影响其他一些组件时对其进行测试,那么这超出了单元测试的范围。
【讨论】:
感谢@Branislav Lazic,是的,我们要检查 DiscoveryClient 的成功创建。 @Sdcoder 好了以上是关于如何为配置类编写@Bean的junit案例的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Apache Spark 数据集中的枚举列编写案例类?