Java 在Robolectric上运行第一个测试时出现问题
奇怪的行为。我现在正在设置Java 在Robolectric上运行第一个测试时出现问题,java,android,robolectric,Java,Android,Robolectric,奇怪的行为。我现在正在设置机器人分子 以下是我的设置: build.app dependencies { testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT' } 及 构建项目 repositories { maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } 这就是我的活动 @RunWith(R
机器人分子
以下是我的设置:
build.app
dependencies {
testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT'
}
及
构建项目
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:多索引安装失败(/tmp/roblectric-Method\u checkActivityNotNull62942157800013113020/com.mandarine.android-sourceDir(是一个目录))
已尝试实现以下库之一:
testImplementation "org.robolectric:multidex:3.4.2"
或
但是没有帮助。也许有人会有用。你也可以从这里开始 我的经验是如何使用Robolectric运行测试: 建筑等级:
testImplementation 'org.robolectric:robolectric:3.8'
testOptions {
unitTests {
includeAndroidResources = true
}
}
@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);
}
}
android.enableAapt2=false
这是我的主要活动:
testImplementation 'org.robolectric:robolectric:3.8'
testOptions {
unitTests {
includeAndroidResources = true
}
}
@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);
}
}
android.enableAapt2=false
最后一个技巧是,添加gradle.properties:
testImplementation 'org.robolectric:robolectric:3.8'
testOptions {
unitTests {
includeAndroidResources = true
}
}
@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);
}
}
android.enableAapt2=false
为什么要实现两个版本?@TheLower更新了问题,请检查。@NileSharthod thx有关链接,我按照脚本进行操作,但由于我仍然无法运行简单的测试,因此出现了新的问题。所以更新了这个问题,但是你的链接在这件事上会很有帮助。在没有禁用AAPT2的情况下,在相同的设置和这些库中工作吗?能戒掉这种瘾就太好了-
aapt2
我想是的。我们不使用来自robolectric的multidex,但它与aapt2的变化不大