我正在尝试本地的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+'
}
任何人都可以提供一些线索,了解这里发生了什么样的魔法?
答案 0 :(得分:2)
此代码仅告知字符串表示(即参见toString()
的{{1}})是" null"并非View
是v
。
AFAIK,null
从不 new Something()
在java