机电单元测试没有反应

时间:2016-04-07 14:34:28

标签: android unit-testing android-studio android-gradle robolectric

我正在测试我的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运行测试也会挂起,但不会显示任何指示符。 enter image description here

以下是我的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没有调试输出说错了。任何帮助将不胜感激。

2 个答案:

答案 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);
  }