Android 使用Robolectric和AppCompat运行Gradle测试会导致NullPointerException

Android 使用Robolectric和AppCompat运行Gradle测试会导致NullPointerException,android,gradle,robolectric,android-appcompat,Android,Gradle,Robolectric,Android Appcompat,正如标题所述,在调用roblectric.buildActivity(MyActivity.class).create().get()时,使用Gradle运行机器人分子测试会导致NullPointerException build.gradle(基于) MyActivityTest.java @RunWith(RobolectricTestRunner.class) @Config(manifest=Config.NONE) public class MyActivityTest {

正如标题所述,在调用
roblectric.buildActivity(MyActivity.class).create().get()时,使用Gradle运行机器人分子测试会导致
NullPointerException

build.gradle(基于)

MyActivityTest.java

@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class MyActivityTest {

    MyActivity activity;


    @Before
    public void setUp() {
        activity = Robolectric.buildActivity(MyActivity.class).create().get();
    }

    @Test
    public void testSomeNumber() {
        Assert.assertEquals(true,true);
    }
}
java扩展了BaseActivity,它扩展了ActionBarActivity

从命令行调用./gradlew localTest运行此配置会导致以下异常

Stacktrace

java.lang.NullPointerException
    at org.robolectric.res.builder.RobolectricPackageManager.getActivityInfo(RobolectricPackageManager.java:62)
    at android.support.v7.app.ActionBarActivityDelegate.getUiOptionsFromMetadata(ActionBarActivityDelegate.java:157)
    at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:53)
    at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
    at com.example.activity.BaseActivity.onCreate(BaseActivity.java:17)
    at com.example.activity.MyActivity.onCreate(MyActivity.java:27)
    at android.app.Activity.performCreate(Activity.java:5008)
    at org.fest.reflect.method.Invoker.invoke(Invoker.java:112)
    at org.robolectric.util.ActivityController$1.run(ActivityController.java:119)
    at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256)
    at org.robolectric.util.ActivityController.create(ActivityController.java:114)
    at org.robolectric.util.ActivityController.create(ActivityController.java:126)
    at com.example.test.MyActivityTest.setUp(MyActivityTest.java:35)

有什么想法吗?

尝试更改构建脚本。当您执行构建任务时,下面的gradle文件将自动运行robolectric测试。您可以根据需要编辑此内容

当前版本的android测试插件有一个问题,所以我们必须使用快照版本。 更多详情:

测试的默认路径是

src/test/java/


我的活动似乎出了问题是的,似乎是这样。但是该行只调用
super.onCreate(savedInstanceState)相同,在此之前我不会调用任何东西。我不确定,但可以从文档
Config.NONE
中找到,如果您的类不使用资源或项目没有清单。但这两种情况都不适用于@Config注释中的活动测试。您是否尝试过使用“reportSdk=10”?
java.lang.NullPointerException
    at org.robolectric.res.builder.RobolectricPackageManager.getActivityInfo(RobolectricPackageManager.java:62)
    at android.support.v7.app.ActionBarActivityDelegate.getUiOptionsFromMetadata(ActionBarActivityDelegate.java:157)
    at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:53)
    at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
    at com.example.activity.BaseActivity.onCreate(BaseActivity.java:17)
    at com.example.activity.MyActivity.onCreate(MyActivity.java:27)
    at android.app.Activity.performCreate(Activity.java:5008)
    at org.fest.reflect.method.Invoker.invoke(Invoker.java:112)
    at org.robolectric.util.ActivityController$1.run(ActivityController.java:119)
    at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256)
    at org.robolectric.util.ActivityController.create(ActivityController.java:114)
    at org.robolectric.util.ActivityController.create(ActivityController.java:126)
    at com.example.test.MyActivityTest.setUp(MyActivityTest.java:35)
buildscript {
   repositories {
     mavenCentral()
     maven {
        url 'https://oss.sonatype.org/content/repositories/snapshots/'
     }
  }
  dependencies {
     classpath 'com.android.tools.build:gradle:0.6.+'
     classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT'

  }
}
apply plugin: 'android'
apply plugin: 'android-test'

repositories {
mavenCentral()
}

android {
compileSdkVersion 19
buildToolsVersion "19.0.0"

 defaultConfig {
    minSdkVersion 8
    targetSdkVersion 19       
 }
}

dependencies {
  compile 'com.android.support:appcompat-v7:+'   
  testCompile 'junit:junit:4.10'
  testCompile 'org.robolectric:robolectric:2.1.+'
  testCompile 'com.squareup:fest-android:1.0.+'
}