Java 使用JUnit捕获自定义异常
我正在为一个方法编写一个Java 使用JUnit捕获自定义异常,java,junit,Java,Junit,我正在为一个方法编写一个JUnit测试用例,在这个方法中,我试图捕获一个异常,但由于某种原因,我的测试没有命中异常。方法很长,但我只需要捕获if块中的异常 试验方法: public void createClient() throws EISClientException { if( client == null ) { ClientConfig c = new ClientConfig(); //Add Glocal JSON/Jackson Prov
JUnit
测试用例,在这个方法中,我试图捕获一个异常
,但由于某种原因,我的测试没有命中异常。方法很长,但我只需要捕获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);
}
看起来,如果客户端未构建,则抛出异常
,但如果我将null
作为任何方法中的参数传递,则肯定会得到NullPointerException
任何帮助都将不胜感激
谢谢在执行测试之前,您正在设置模拟客户端。在您正在测试的方法中,如果(client==null),它将启动
我认为这是计算为false,并且在方法中没有处理任何内容实际上,在JUnit中有一种更简洁的方法来验证抛出的异常:
@Test(expected=EISClientException.class)
public void testCreateClientException() throws Exception {
ClientConfiguration clientConfiguration = new ClientConfiguration();
Client client = mock(Client.class);
clientConfiguration.setDisableSslValidation(true);
client = ClientBuilder.newBuilder().build();
clientConfiguration.createClient();
}
只有抛出异常时,此测试才会成功(我知道这并不能直接回答您的问题)我知道这一点,并且我尝试过这种方法,但没有成功。您确定创建客户端真的抛出了自定义异常吗?我说,“看起来像”。这意味着不确定只是猜测。但他并没有把被嘲弄的客户放在任何地方?如果我错了,请纠正我。@DJ你是对的。我认为它必须设置一个单例或静态实例。但我不确定