Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Junit测试中未涉及Runnable内部的方法调用_Java_Android_Junit - Fatal编程技术网

Java Junit测试中未涉及Runnable内部的方法调用

Java Junit测试中未涉及Runnable内部的方法调用,java,android,junit,Java,Android,Junit,我正在尝试为我的应用程序添加单元测试,每一件事情都很顺利,当我在runnable中有一个延迟后调用的方法时 测试通过了,但是当我看到覆盖率报告时,它显示这个方法调用没有被覆盖 这是我的演示者中的代码 view.changeLogo(); handler=new Handler(); new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { @Override public

我正在尝试为我的应用程序添加单元测试,每一件事情都很顺利,当我在runnable中有一个延迟后调用的方法时

测试通过了,但是当我看到覆盖率报告时,它显示这个方法调用没有被覆盖

这是我的演示者中的代码

  view.changeLogo();
    handler=new Handler();
    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        @Override
        public void run() {
            view.navigateToLogIn();
        }
    },5000);
这是我测试中的代码

  new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        @Override
        public void run() {
            verify(view).navigateToLogIn();
        }
    },5000);
当我使用Thread.sleep时,唯一能让它工作的方法是,但在这里,我不想阻止UI线程

有什么帮助吗


谢谢

问题在于您正在使用系统的实际调度机制。因此,您只需使用Thread.sleep让系统运行执行您的runnable的另一个线程。另一方面,系统调度机制经过了很好的测试,因此您只需要测试您的可运行性。使您的
Runnable
成为一个自己的类,您可以直接实例化和测试
run
方法。问题是您使用的是系统的实际调度机制。因此,您只需使用Thread.sleep让系统运行执行您的runnable的另一个线程。另一方面,系统调度机制经过了很好的测试,因此您只需要测试您的可运行性。使您的
Runnable
成为一个自己的类,您可以直接实例化和测试
run
方法。