包含 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 中不起作用