就像标题中一样,我想测试一个这样的方法:

public void startThread()
{
    new Thread()
    {
        public void run()
        {
            myLongProcess();
        }
    }.start();
}

编辑:
通过注释判断,我认为测试线程是否启动不是很常见。因此,我不得不调整问题……如果我的要求是100%的代码覆盖率,我是否需要测试该线程是否启动?如果是这样,我真的需要一个外部框架吗?

最佳答案

可以使用Mockito优雅地完成此操作。假设该类名为ThreadLauncher,则可以确保startThread()方法导致调用myLongProcess(),方法是:

public void testStart() throws Exception {
    // creates a decorator spying on the method calls of the real instance
    ThreadLauncher launcher = Mockito.spy(new ThreadLauncher());

    launcher.startThread();
    Thread.sleep(500);

    // verifies the myLongProcess() method was called
    Mockito.verify(launcher).myLongProcess();
}

09-04 03:26