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

时间:2018-10-04 12:00:25

标签: java android 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" }
}

这就是我的活动

@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安装失败(/tmp/robolectric-Method_checkActivityNotNull6294215715780013113020/com.mandarine.android-sourceDir(是目录))。

试图实现该库之一:

testImplementation "org.robolectric:multidex:3.4.2"

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

但是没有帮助。

1 个答案:

答案 0 :(得分:1)

也许有人会有用。您也可以从此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