运行 Robolectric 上的第一个测试有问题

Problem with running the first test on the Robolectric

奇怪的行为。我现在正在设置 Robolectric

这是我的设置:

build.app

dependencies {
    testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT'
}

testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }

build.project

repositories {
     maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}

这就是我的 activity

@RunWith(RobolectricTestRunner.class)

public class RootActivityTest {
private RootActivity activity;

@Before
public void setup()  {
    activity = Robolectric.buildActivity(RootActivity.class)
            .create()
            .resume()
            .get();
}

@Test
public void checkActivityNotNull() throws Exception {
    assertNotNull(activity);
}
}

现在,当我 运行 使用此配置进行测试时,出现以下错误:

java.lang.RuntimeException: MultiDex installation failed (/tmp/robolectric-Method_checkActivityNotNull6294215780013113020/com.mandarine.android-sourceDir (Is a directory)).

试图实现这个库之一:

testImplementation "org.robolectric:multidex:3.4.2"

testCompile "org.robolectric:shadows-multidex:3.0"

但无济于事。

也许有人会有用。你也可以从这个开始 link

我如何 运行 测试 Robolectric 的经验:

build.grade:

testImplementation 'org.robolectric:robolectric:3.8'

testOptions {
    unitTests {
        includeAndroidResources = true
    }
}

这是我的 MainActivity:

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)

public class MainActivityTest {

@Test
public void shouldNotBeNull() throws Exception {
    MainActivity activity = Robolectric.setupActivity(MainActivity.class);
    assertNotNull(activity);
}
}

最后一招,加入gradle.properties:

android.enableAapt2=false