java - Android 单元测试 - 测试返回 null 的方法

标签 java android unit-testing junit mockito

测试方法:

public static String getDeviceName() {
    String manufacturer = Build.MANUFACTURER;
    String model = Build.MODEL;
    if (model.startsWith(manufacturer)) {
        return WordUtils.capitalize(model);
    } else {
        return WordUtils.capitalize(manufacturer) + " " + model;
    }
}

测试用例:

@Test
public void testGetDeviceName() throws Exception {
    String deviceNameTest = "device name";
    assertEquals(deviceNameTest, DeviceUtil.getDeviceName());
}

错误

java.lang.NullPointerException

getDeviceName(DeviceUtil.java:15) DeviceUtilTest.testGetDeviceName(DeviceUtilTest.java:18)

DeviceUtil.getDeviceName() -> returns null

最佳答案

您无法测试 getDeviceName()Build.MANUFACTURERBuild。 MODEL 将返回 null。另外制造商和型号来自设备,您的IDE如何获取它?

顺便说一句,如果你想用静态方法测试 Util 类,我建议你使用 PowerMock 也是如此,否则您必须创建 util 的包装类来进行测试。

关于java - Android 单元测试 - 测试返回 null 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823382/

相关文章:

java - 如何验证地理坐标?

android fragment 上的逐帧动画

Android,使用单个 startActivityForResult 选择和裁剪图像,但检索原始图像 URI?

android - RewardedVideoAd.loadAd() 的网络开销是多少?

php - yii phpunit 测试覆盖率 View

c# - 我如何 mock UserPrincipal?

python - 如何在 PyCharm 中禁用添加相对路径?

java - Spring Boot 查询未更新 mysql 数据库

java - 有没有一种方法可以使用 Jersey Clinet 从客户端调用 REST 服务上的 HTTP PATCH

java - 重述/简化 : Java generics involving overriding a method