奇怪的行为。我现在正在设置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"
但是没有帮助。
答案 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