【问题标题】:Robolectric different threads in Android Studio vs. Gradle testsAndroid Studio 与 Gradle 测试中的 Robolectric 不同线程
【发布时间】:2017-02-17 09:42:24
【问题描述】:

当我从 Android Studio 和 Gradle 构建开始 Robolectric 测试时,为什么线程名称不同?

例如考虑这个简单的测试:

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

当我开始这个测试时

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    并且这个测试从 AS 和控制台都通过了。

    【讨论】:

    • 我不需要这个测试——它只是为了解释。我真的很奇怪为什么主looper的线程不叫main。这令人困惑(至少对于像我这样的初学者来说)
    • 线程名称来自我想的测试运行器。所以它与 Robolectric 没有关系
    猜你喜欢
    • 1970-01-01
    • 2014-10-03
    • 2013-08-18
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多