Android @UiThreadTest注释在片段的编写测试中不起作用

Android @UiThreadTest注释在片段的编写测试中不起作用,android,android-fragments,android-espresso,android-testing,Android,Android Fragments,Android Espresso,Android Testing,我为显示注释列表的片段编写了一个测试,如下所示 @RunWith(AndroidJUnit4::class) class CommentListFragmentTest { @Rule @JvmField var instantExecutorRule = InstantTaskExecutorRule() private lateinit var mockedViewModel: CommentListViewModel private val mockNavCont

我为显示注释列表的片段编写了一个测试,如下所示

@RunWith(AndroidJUnit4::class)
class CommentListFragmentTest {


  @Rule
  @JvmField
  var instantExecutorRule = InstantTaskExecutorRule()

  private lateinit var mockedViewModel: CommentListViewModel
  private val mockNavController = mock<NavController>()

  private lateinit var commentListFragment: CommentListFragment

  @Before
  fun setup() {

    mockedViewModel = mock(CommentListViewModel::class.java)

    val scenario = launchFragmentInContainer(themeResId = R.style.AppTheme) {
        CommentListFragment().apply {

            commentListFragment = this
            viewModelFactory = ViewModelUtil.createFor(mockedViewModel)

            this.viewLifecycleOwnerLiveData.observeForever { viewLifecycleOwner ->
                if (viewLifecycleOwner != null) {
                    // The fragment’s view has just been created
                    Navigation.setViewNavController(this.requireView(), mockNavController)
                }
            }
        }
    }

    scenario.onFragment { fragment ->
        Navigation.setViewNavController(fragment.requireView(),mockNavController )
    }
  }

  @Test
  @UiThreadTest
  fun loadCommentsList() {

    val commentList: MutableList<Comment> = ArrayList()
    commentList.add(mock(Comment::class.java))
    commentList.add(mock(Comment::class.java))
    commentListFragment.render(CommentListUiModel.SetupList(commentList))

    Espresso.onView(withId(R.id.progress_bar))
         .check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
    Espresso.onView(withId(R.id.recycler_view))
         .check(RecyclerViewItemCountAssertion(2))
    Espresso.onView(withId(R.id.emptyCommentList))
         .check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
  }
}
但当我使用下面的方法时,它会起作用:

@Rule
@JvmField
var uiThreadTestRule = UiThreadTestRule()
@Test
fun loadCommentsList() {

    uiThreadTestRule.runOnUiThread {
        val commentList: MutableList<Comment> = ArrayList()
        commentList.add(mock(Comment::class.java))
        commentList.add(mock(Comment::class.java))
        commentListFragment.render(CommentListUiModel.SetupList(commentList))
    }

    Espresso.onView(withId(R.id.progress_bar))
         .check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
    Espresso.onView(withId(R.id.recycler_view))
         .check(RecyclerViewItemCountAssertion(2))
    Espresso.onView(withId(R.id.emptyCommentList))
         .check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))

}
@规则
@JvmField
var uiThreadTestRule=uiThreadTestRule()
@试验
趣味加载注释列表(){
uiThreadTestRule.runUnuithread{
val commentList:MutableList=ArrayList()
add(mock(Comment::class.java))
add(mock(Comment::class.java))
render(CommentListUiModel.SetupList(commentList))
}
浓缩咖啡onView(带id(R.id.progress_bar))
.检查(匹配(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
浓缩咖啡onView(带id(R.id.recycler_view))
.检查(RecycleServiceItemCountAssertion(2))
浓缩咖啡onView(带id(R.id.emptyCommentList))
.检查(匹配(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
}
我想用@UiThreadTest注释替换runOnUiThread,因为UiThreadTestRule已弃用,似乎@UiThreadTest不起作用,有什么问题?我做错什么了吗

@Rule
@JvmField
var uiThreadTestRule = UiThreadTestRule()
@Test
fun loadCommentsList() {

    uiThreadTestRule.runOnUiThread {
        val commentList: MutableList<Comment> = ArrayList()
        commentList.add(mock(Comment::class.java))
        commentList.add(mock(Comment::class.java))
        commentListFragment.render(CommentListUiModel.SetupList(commentList))
    }

    Espresso.onView(withId(R.id.progress_bar))
         .check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
    Espresso.onView(withId(R.id.recycler_view))
         .check(RecyclerViewItemCountAssertion(2))
    Espresso.onView(withId(R.id.emptyCommentList))
         .check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))

}