gpt4 book ai didi

java - 套接字超时的junit测试用例

转载 作者:行者123 更新时间:2023-11-30 11:51:47 25 4
gpt4 key购买 nike

我有一个支持一些出站网络服务的应用程序。我是使用 HttpClient 并且我需要添加服务超时,因为其中一个我正在访问的外部 URL 需要很长时间才能响应(有时)。我正在尝试添加一些 junit 测试用例以确保我的超时有效适本地。我有这样的东西,其中指定的超时值是只不过是配置的套接字超时 -

@Test (timeout=6000)
public void testTimeOut() {
notifier.performGetonUrl(getTestUrl());
}

我觉得不是很好。我可以使用更好的测试吗?

最佳答案

如果您希望为您的代码编写真正的隔离单元测试,那么我同意您的测试不合适。如果您希望编写更多的集成测试,那么您的方法很好。

对于我的隔离 junits,我创建它们以便它们只测试被测类。我用 EasyMock模拟所有协作类。所以在这种情况下,我将为 httpClient 创建一个模拟。我会在模拟抛出异常的地方设置一个测试,然后断言被测类按预期处理异常。下面的代码片段可能会让您了解我的意思。

private DefaultHttpClient httpClient;
private ClassUnderTest classUnderTest;

@Before
public void setUpTest() {
httpClient = createMock(DefaultHttpClient.class);

@Test
public void performARequestThatThrowsAnIOException() {
expect(httpClient.execute(post)).andThrow(iOException);

replayAll();

try {
classUnderTest.executeMethodUnderTest();
fail("This test should throw an IOException.");
} catch (IOException e){
verifyAll();
}

上面假设被测类中的方法抛出异常。如果异常被捕获,那么你将以不同的方式编写上面的内容。

关于java - 套接字超时的junit测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247478/

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