Android本地单元测试 - 新的View(null)返回null

时间:2015-07-22 17:23:53

标签: java android unit-testing null

我正在尝试本地的android测试(在本地JVM上运行的测试,而不是在设备上)。我知道android.jar中的类不能被正确使用,除非它们被模拟,但出于某种原因,当我尝试实例化一个新的View(或我自己的从View继承的类)时 - 我得到null。这完全违背了我的信念,即" new"永远不会在Java中返回null。

这是我的测试代码(src/test/java/com/example/FooTest.java):

package com.example;

import android.view.View;
import org.junit.Test;

public class FooTest {
    @Test
    public void testView() {
        View v = new View(null);
        System.out.println("view = " + v);
    }
}

此代码在测试报告输出中打印视图为空。

这是我的build.gradle(项目的其余部分仅由android create project生成,并且没有兴趣):

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3+'
    }
}
apply plugin: 'android'

android {
    compileSdkVersion 'android-22'
    buildToolsVersion '23.0.0 rc2'

    buildTypes {
        release {
            minifyEnabled false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }

    testOptions {
        unitTests.returnDefaultValues = true
    }
}

repositories {
    jcenter();
}

dependencies {
    testCompile 'junit:junit:4.12+'
}

任何人都可以提供一些线索,了解这里发生了什么样的魔法?

1 个答案:

答案 0 :(得分:2)

此代码仅告知字符串表示(即参见toString()的{​​{1}})是" null"并非Viewv

AFAIK,null 从不 new Something()在java