这个问题在这里已有答案:
我正在为一个方法编写一个 JUnit
测试用例,我试图捕获 exception
但由于某种原因我的测试没有达到异常 . 方法很长但我只需要捕获 if
块中的异常 .
测试方法:
public void createClient() throws EISClientException {
if( client == null ) {
ClientConfig c = new ClientConfig();
//Add Glocal JSON/Jackson Provider
c.register( JacksonFeature.class );
if ( isDisableSslValidation() ) {
try {
client = ClientBuilder.newBuilder().sslContext( SslUtil.createGullibleSslContext() )
.hostnameVerifier( SslUtil.gullibleVerifier ).withConfig( c ).build();
} catch( Exception e ) {
throw new EISClientException( e );
}
} else {
client = ClientBuilder.newBuilder().withConfig( c ).build();
}
//Add Client Properties
if( clientProperties.size() > 0 ) {
for( String key : clientProperties.keySet() ) {
client.property( key, clientProperties.get( key ) );
}
}
//Add Client Filters
if( clientFilters != null && clientFilters.size() > 0 ) {
for( IClientFilter cf : clientFilters ) {
client.register( cf.getFilter() );
}
}
}
}
JUnit测试:
@Test
public void testCreateClientException() throws Exception {
ClientConfiguration clientConfiguration = new ClientConfiguration();
Client client = mock(Client.class);
boolean caughtException = false;
try {
clientConfiguration.setDisableSslValidation(true);
client = ClientBuilder.newBuilder().build();
clientConfiguration.createClient();
} catch (EISClientException ex) {
caughtException = true;
}
assertTrue(caughtException);
}
看起来如果客户端没有构建然后抛出 exception
但是如果我在任何方法中传递 null
作为参数肯定会得到 NullPointerException
.
任何帮助,将不胜感激 .
谢谢
2 回答
您在执行测试之前正在设置模拟客户端 . 在您正在测试的方法中,它启动
if (client == null)
我认为这是评估为false并且在方法中没有处理任何内容实际上,在JUnit中有一种更简洁的方法来验证抛出的异常:
如果抛出异常,这个测试只会成功(我知道这不会直接回答你的问题)