如何使用JUnit测试异步进程?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

如何测试使用JUnit触发异步进程的方法?

如何让测试等待过程结束

提问于
用户回答回答于

  1. 测试异步进程是否正确提交。可以模拟接受异步请求的对象,并确保提交的作业具有正确的属性,等等。
  2. 测试异步回调是否在做正确的事情。在这里,可以模拟最初提交的作业,并假定它已正确初始化,并验证回调是否正确。
用户回答回答于

另一种选择是使用CountDownLatch

public class DatabaseTest {

    /**
     * Data limit
     */
    private static final int DATA_LIMIT = 5;

    /**
     * Countdown latch
     */
    private CountDownLatch lock = new CountDownLatch(1);

    /**
     * Received data
     */
    private List<Data> receiveddata;

    @Test
    public void testDataRetrieval() throws Exception {
        Database db = new MockDatabaseImpl();
        db.getData(DATA_LIMIT, new DataCallback() {
            @Override
            public void onSuccess(List<Data> data) {
                receiveddata = data;
                lock.countDown();
            }
        });

        lock.await(2000, TimeUnit.MILLISECONDS);

        assertNotNull(receiveddata);
        assertEquals(DATA_LIMIT, receiveddata.size());
    }
}

扫码关注云+社区