【问题标题】:testing a synchronous api using junit使用junit测试同步api
【发布时间】:2013-09-18 14:03:44
【问题描述】:

我正在尝试从 Android 库中测试一组 API。这样的 api 之一是同步方法,它在调用状态后立即返回。但在内部,该方法将创建几个线程来执行一些后台任务。

这里当我编写一个junit测试用例来测试这个api时,我的测试用例调用了这个api然后结束了测试。我需要让我的测试用例等待一段时间,直到该 api 创建的线程也完成其任务。

尝试thread.sleep()时,junit 暂停线程,没有任何进展。

如何让我的 junit 测试用例等到由测试方法创建的其他线程完成?

【问题讨论】:

    标签: java android multithreading junit


    【解决方案1】:

    您可以通过设置自定义后台执行程序来测试这些类型的调用。这将导致所有线程按顺序在同一个线程上执行,并允许您使用 junit 来测试这些操作。

    像这样创建一个假的执行器类:

    public class FakeExecutor implements Executor {
        @Override
        public void execute(Runnable runnable) {
            runnable.run();
        }
    }
    

    在调用之前或在测试开始时在测试中设置你的假执行器:

    BackgroundExecutor.setExecutor(new FakeExecutor());
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    相关资源
    最近更新 更多