运行 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
奇怪的行为。我现在正在设置 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