gpt4 book ai didi

android - 如何对方法进行单元测试,当它在 android 中有处理程序时

转载 作者:行者123 更新时间:2023-11-30 05:06:13 25 4
gpt4 key购买 nike

我有这样的方法

  public void updateListViewVisibility(List<User> userList) {
userViewVisibility.set(View.GONE);
handler.postDelayed(runnableCode, 10000000);
}


/**
* A runnable code, the purpose of this is to display a message if no user found in range.
*/
private Runnable runnableCode = new Runnable() {
@Override
public void run() {
changeState();
}
};

如果 updateListViewVisibility 方法中没有处理程序,我可以运行此单元测试

@Test
public void test_updateupdateListViewVisibility() {
List<User> userList = new ArrayList<User>();
userList.clear();
SUT.updateListViewVisibility(userList);
assertEquals("Variable userViewVisibility should be false",
SUT.userViewVisibility.get(), false);
}

但是,如果我保留处理程序

我收到以下错误。

java.lang.RuntimeException: Method postDelayed in android.os.Handler not mocked. See http://g.co/androidstudio/not-mocked for details.

如何正确地对该方法进行单元测试?

最佳答案

很简单,运行你的测试类 MockitoJunitRunner

例如:@RunWith(MockitoJUnitRunner.class)
公共(public)类 WhateverClassTest { }

并模拟处理程序

@Mock
Handler handler

//添加这些依赖到 gradle:

    testImplementation 'org.mockito:mockito-core:2.2.0'
testImplementation 'junit:junit:4.12'

关于android - 如何对方法进行单元测试,当它在 android 中有处理程序时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com