如何在JUnit Test for SSLContextBuilder中引发异常?

问题描述 投票:0回答:1

我已经尝试为以下代码编写junit测试,但是无法在测试用例中引发异常。以下是实现:

public static HttpClientBuilder createTrustAllHttpClientBuilder() {
    try {
        SSLContext sslContext = SSLContextBuilder
                    .create()
                    .loadTrustMaterial(null, (certificate, authType) -> true)
                    .build();
    }
    catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
        throw new IllegalStateException(e);
    }
}

以下是我的junit测试:

@RunWith(PowerMockRunner.class)
@PrepareForTest({SSLContextBuilder.class})
public class testClass {

     public void testCase() {
           SSLContextBuilder sslContextBuilder = mock(SSLContextBuilder.class, RETURNS_DEEP_STUBS);
           PowerMockito.mockStatic(SSLContextBuilder.class);
           PowerMockito.when(SSLContextBuilder.create()).thenReturn(sslContextBuilder);
           PowerMockito.when(sslContextBuilder.loadTrustMaterial(null, (certificate, authType) -> true)).thenThrow(new NoSuchAlgorithmException());
     }
}

如果您之前遇到以下问题,我将非常感谢您提供的任何形式的帮助或知识共享。谢谢!

java aem junit5
1个回答
0
投票

因为已经有了模拟,所以可以使用thenThrow而不是thenReturn使模拟抛出异常。

https://static.javadoc.io/org.mockito/mockito-core/2.2.9/org/mockito/stubbing/OngoingStubbing.html

© www.soinside.com 2019 - 2024. All rights reserved.