当前位置: 首页 > 知识库问答 >
问题:

测试父抽象类的泛型方法

汪阳辉
2023-03-14

我有这样的抽象类:

abstract class A(val x: String, y: String..){
fun <R1,R2>bla(request:R1):Response<R2>(..)
}

我还有一个扩展抽象的类:

class B(val bean1:Bean1, val bean2: Bean2): A(bean1.x, bean2.y){
fun doSomething(
  <R1,R2>bla(Object())
)}
@Mock
private lateinit var bean1:Bean1
@Mock
private lateinit var bean2:Bean2
private lateinit b:B
@BeforeAll
fun init(){
 MockitoAnnotations.initMocks(this)
 b = spy(B(bean1,bean2))
}

@Test
fun `Test`(){
 doReturn(Response()).when(b).bla<Class1,Class2>(Object())
}

共有1个答案

尹俊雅
2023-03-14

我通过使用接口而不是抽象类来解决这个问题。

 类似资料:
  • 例如,我有以下接口 实现此接口的抽象类 以及具体实施 我想建议所有将转换为任何内容的方法。我创建了以下方面 这是行不通的。Spring不会为类创建代理。然而,如果我从抽象类重写方法,它将开始工作,Spring成功地为创建代理,并执行所有需要的逻辑。 为什么会发生这种情况?有没有办法定义切入点,这样我就不需要重写方法?

  • 它是关于java中具有两种泛型类型(一种用于返回类型,另一种用于形式参数)的泛型方法以及如何实现它。我想我在图片中缺少一些东西来让它工作。 事情是这样的... 这是工作 : 这不起作用: java编译器告诉我: 好吧,就是这样。提前感谢大家!希望它能在未来帮助别人! P、 D:这不是枚举类型的问题。它发生在类和层次结构之间。所以别怪Enum了,我试过了,但没用。 对于泛型参数 我们可以做一个一般规

  • 喂... 我有一些课程: 1.扩展到的TermValue <代码>2。值 3.备选案文 我如何解决(或替代)这些问题?

  • 当我宣布“抽象公共无效显示();”在抽象类测试中,这是创建一个全新的show()方法,还是只引用Inter接口中声明的show()方法?请澄清。

  • 我无法编译一个需要从抽象类超类型重写方法的方法,该类超类型使用泛型作为其中一个参数。编译器抱怨扩展类的setRef()方法没有重写超类型中的方法。 父摘要类: 参考是: 而Interf是: 扩展子类(setRef()不编译): 我也尝试过使用通配符,但收到了相同的错误。使用通配符时,抽象类“setRef()是: 扩展类setRef()是: 甚至: 我能让它编译的唯一方法是,如果扩展类“setRef

  • “绑定不匹配:Team类型不是league类型 的有界参数 >的有效替代品。”