Java 用JUnit测试构造函数
我需要测试一个使用JUnit抛出异常的构造函数 以下是建造师:Java 用JUnit测试构造函数,java,junit,Java,Junit,我需要测试一个使用JUnit抛出异常的构造函数 以下是建造师: public EISThirdPartyClient(ClientConfiguration _config, String _serviceURL) throws EISClientException { super(_config, _serviceURL); try { ObjectMapperHolder.initialize(_config); } catch (E
public EISThirdPartyClient(ClientConfiguration _config, String _serviceURL)
throws EISClientException {
super(_config, _serviceURL);
try {
ObjectMapperHolder.initialize(_config);
} catch (Exception e) {
throw new EISClientException(e);
}
}
以下是测试用例:
@Test
public void testEISThirdPartyClientConctructor() throws EISClientException {
@SuppressWarnings("unused")
EISThirdPartyClient client = new EISThirdPartyClient(new ClientConfiguration(), "url");
boolean caughtException = false;
try {
ObjectMapperHolder.initialize(null);
} catch (Exception ex) {
if (ex instanceof EISClientException) {
caughtException = true;
assertTrue(ex.getCause() instanceof EISClientException);
} else {
ex.printStackTrace();
fail("Uncaught exception");
}
}
assertTrue(caughtException);
}
我得到了
java.lang.AssertionError
,这不是我所期望的。有人能告诉我我做错了什么吗?你在测试错误的东西-你想确保对象的构造失败,而不是当ObjectMapperHolder退出时它退出
您还可以极大地简化测试-您可以期望抛出EISClientException
,而无需对异常进行任何进一步的验证
主要的一点是让测试以最少的工作量失败。似乎按照您的配置传递null
,下面是一个示例:
@Test(expected = EISClientException.class)
public void testEISThirdPartyClientConctructor() throws EISClientException {
new EISThirdPartyClient(null, "url");
}
如果这不太适合您的需要,您可能需要研究一个类似Mockito的模拟框架,以便在代码的关键部分提供行为。太好了。它通过了。非常感谢:)