gpt4 book ai didi

Android 单元测试 - 代码引用 android 类时的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:49 25 4
gpt4 key购买 nike

我有一个常规的 JUnit 测试用例,用于测试非 Android 方法逻辑。该方法将 TextUtils 用于诸如 TextUtils.isEmpty() 之类的事情。

将它变成 AndroidTestCase 只是为了引入 TextUtils 类对我来说没有意义。有没有更好的方法来检测这个单元测试?比如给测试工程加个android.jar什么的?

与我想模拟 Context 对象的另一个测试的情况类似。如果不扩展 AndroidTestCase,我就无法 mock 它。在这些情况下,我只是想测试非 Android 逻辑,不希望它在模拟器上运行,但它涉及一些 Android 类,最佳实践是什么?

谢谢

最佳答案

您有两个选项可以为您的 Android 代码运行测试。首先是仪器测试选项,您可以在其中通过将 adb 连接到您的系统来测试您的代码。

第二种也是更实用的方法是 JUnit 测试,其中仅测试您的 Java 类,而模拟所有其他与 Android 相关的内容。

使用 PowerMockito

将此添加到您的类(class)名称上方,并包括任何其他 CUT 类(class)名称(被测类(class))

@RunWith(PowerMockRunner.class)
@PrepareForTest({TextUtils.class})
public class ContactUtilsTest
{

将此添加到您的@Before

@Before
public void setup(){
PowerMockito.mockStatic(TextUtils.class);
mMyFragmentPresenter=new MyFragmentPresenterImpl();
}

这将使 PowerMockito 为 TextUtils 中的方法返回默认值

例如,假设您的实现正在检查一个字符串是否为空,然后在您的@Test 中

when(TextUtils.isEmpty(any(CharSequence.class))).thenReturn(true);
//Here i call the method which uses TextUtils and check if it is returning true
assertTrue(MyFragmentPresenterImpl.checkUsingTextUtils("Fragment");

您还必须添加相关的 gradle depedencies

testCompile "org.powermock:powermock-module-junit4:1.6.2"
testCompile "org.powermock:powermock-module-junit4-rule:1.6.2"
testCompile "org.powermock:powermock-api-mockito:1.6.2"
testCompile "org.powermock:powermock-classloading-xstream:1.6.2"

关于Android 单元测试 - 代码引用 android 类时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483097/

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