我正在测试我的MVP Android应用程序,我无法在我的系统上运行Robobelectric单元测试。使用Roboelectric的任何测试都没有响应并且永远挂起。
例如,以下测试将永远运行:
import static com.google.common.truth.Truth.assert_;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23)
public class FakeTest {
@Test
public void testShouldFail() {
assert_().fail("Fail!");
}
}
Android Studio只会在任何Roboelectric测试中无限期地显示旋转图标。在终端中从gradle运行测试也会挂起,但不会显示任何指示符。
以下是我的build.gradle
测试依赖项的样子:
// Unit testing
testCompile(
'junit:junit:4.12',
'org.mockito:mockito-core:1.10.19',
'com.google.truth:truth:0.28'
)
// Roboelectric 3.1-SNAPSHOT is the latest that supports API 23
testCompile('org.robolectric:robolectric:3.1-SNAPSHOT') {
exclude group: 'commons-logging'
exclude group: 'org.apache.httpcomponents'
}
系统信息:
OSX:10.11.4
Android Studio:2.0.0-rc2
JDK:1.8.0_40
Android SDK:23
Gradle工具:2.0.0-rc2
Roboelectric:3.1-SNAPSHOT
Gradle:2.10
我完全难过了。 Roboelectric没有调试输出说错了。任何帮助将不胜感激。
答案 0 :(得分:4)
原来这个https://github.com/frogermcs/AndroidDevMetrics gradle插件与Roboelectric相矛盾。
答案 1 :(得分:2)
对我来说问题是AndroidDevMetrics。如果您禁用了activiyMetrics,它可以正常工作。
AndroidDevMetrics.Builder androidDevMetricsBuilder =
new AndroidDevMetrics.Builder(this)
.enableActivityMetrics(!isRoboUnitTest())
.enableDagger2Metrics(true)
.showNotification(true);
AndroidDevMetrics.initWith(androidDevMetricsBuilder);
public static boolean isRoboUnitTest() {
return "robolectric".equals(Build.FINGERPRINT);
}