使用Mockito和kotlin时,只允许在类文字的左侧使用类

时间:2017-08-16 11:22:43

标签: android mockito kotlin

我使用Android studio的转换工具转换现有的java测试类。

我收到此错误:

  

只允许在类文字的左侧使用类

以下是使用的测试用例:

爪哇

doAnswer(answerVoid(
            (OnDataListListener<List<BEntity>> myCallback) -> myCallback.onSuccess(mList))).when(
            mInteractor).performGetBList(any(OnDataListListener.class), anyBoolean());

科特林

doAnswer(answerVoid { listener: OnDataListListener<List<BEntity>> ->
      listener.onSuccess(
          emptyList())
    }).`when`<DragonInteractor>(mInteractor)
        .performGetBList(any<OnDataListListener>(OnDataListListener<*>::class.java),
            anyBoolean())

那么如何在这种情况下使用通用参数?感谢。

2 个答案:

答案 0 :(得分:5)

只需使用OnDataListListener::class.java即可。

在类引用表达式中不需要(且不允许)尖括号的原因是类引用完全不依赖于泛型,对于类的泛型特化没有不同的类引用。

答案 1 :(得分:0)

首先删除OnDataListListener<*>::class.java参数 然后在List<BEntity>参数类型中添加OnDataListListener

结果是

doAnswer(answerVoid { listener: OnDataListListener<List<BEntity>> ->
  listener.onSuccess(
      emptyList())
}).`when`<DragonInteractor>(mInteractor)
    .performGetBList(any<OnDataListListener<List<BEntity>>>(),
        anyBoolean())