gpt4 book ai didi

java - 使用 JUnit 测试构造函数

转载 作者:行者123 更新时间:2023-12-02 04:07:10 24 4
gpt4 key购买 nike

我需要使用 JUnit 测试一个引发异常的构造函数。

下面是构造函数:

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 这样的模拟框架,以便在您处于代码的关键部分时提供行为。

关于java - 使用 JUnit 测试构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com