包含 CountDownTimer 类的 Android 单元测试方法

Posted

技术标签:

【中文标题】包含 CountDownTimer 类的 Android 单元测试方法【英文标题】:Android Unit test method that content CountDownTimer class 【发布时间】:2017-07-24 16:40:07 【问题描述】:

问题

java.lang.RuntimeException: android.os.CountDownTimer 中的方法启动未模拟。

即使我已经模拟了它。

这是我的代码

           void mSomething() 
                new CountDownTimer(5000, 5000) 

                    public void onTick(long millisUntilFinished) 
                    

                    public void onFinish() 
                        //do somethig
                    
    .start();

这是我的测试

@Test
     public void testSomething() throws Exception 

     CountDownTimer countDownTimer = mock(CountDownTimer.class);
     PowerMockito.whenNew(CountDownTimer.class).withAnyArguments().thenReturn(countDownTimer);

    someClass.mSomething();
    //verify

【问题讨论】:

请告诉我们您在@PrepareForTest 注释中的内容——这是PowerMock 中常见的错误来源。 @RunWith(PowerMockRunner.class) @PrepareForTest(someClass.class) 你没有准备CountDownTimer 我也尝试过,但仍然遇到同样的错误 @MohammedAsmar 你解决了这个问题吗? 【参考方案1】:

将此行添加到模块 build.gradle

android 
    ...
    testOptions 
        unitTests.returnDefaultValues = true
     

这段代码解决了我的问题

【讨论】:

以上是关于包含 CountDownTimer 类的 Android 单元测试方法的主要内容,如果未能解决你的问题,请参考以下文章

CountDownTimer 中的 android-putParcelableArrayList 将相同的值放在返回的列表上

CountDownTimer.cancel() 在 Android 中不起作用

使用 CountDownTimer 更新 ProgressBar

XX 格式的 CountDownTimer 秒数

如何向 CountDownTimer 添加闹钟?

Android CountDownTimer的使用