Android Studio与Gradle测试中的Robolectric不同线程

时间:2016-10-08 14:07:06

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

当我从Android Studio开始进行Robolectric测试而不是Gradle构建时,为什么线程名称会有所不同?

e.g。考虑这个简单的测试:

@RunWith(RobolectricTestRunner.class)
public class RobolectricRxThreadTest {
    @Test
    public void testMainThreadName() {
        assertEquals("main", Thread.currentThread().getName());
    }
}

当我开始这个测试时

  • 直接在 Android Studio (按 CTRL + SHIFT + F10 )测试
  • 但是当我开始 gradle tests 时(例如来自Gradle项目视图::app - Tasks - verification - test,或者从终端视图:./gradlew test失败 线程名称为Thread worker而非预期的main

1 个答案:

答案 0 :(得分:1)

我刚刚复制了这个问题,但我想知道你为什么需要这个测试?

如果你真的想检查主线程,那么正确的方法是:

 assertThat(Thread.currentThread()).isEqualTo(Looper.getMainLooper().getThread());

此测试从AS和控制台传递都运行。