如何为配置类编写@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 数据集中的枚举列编写案例类?

如何为调用 API 的方法编写 JUnit 测试?

如何为班级编写@Bean? [复制]

Spring Boot 自动装配配置类进入 Junit 测试

如何为引用自身的案例类提供 JsonFormats?

如何为具有spring存储库代码的@Component类编写集成测试?