套接字超时的junit测试用例

时间:2011-08-30 17:44:16

标签: java junit httpclient

我有一个支持一些出站Web服务的应用程序。我是 使用HttpClient我需要添加一个服务时间,因为其中一个 我访问的外部URL需要很长时间才能响应(有时)。 我正在尝试添加一些junit测试用例以确保我的超时工作正常 正常。我有这样的东西,指定的超时值是 比配置的套接字超时更多 -

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

我觉得它不是一个好人。我可以使用更好的测试吗?

1 个答案:

答案 0 :(得分:1)

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

对于我的隔离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();
     }

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