我想模拟注释来检查根据给定注释返回结果的类的良好行为。
@Test
fun <T> supports_when_field_has_OneToOne_annotation_with_eager_fetch_type() {
val myHandler = MyHandler<T>()
val joinAnnotation = mock<OneToOne> {
on { this.fetch }.thenReturn(FetchType.EAGER)
onGeneric { this.annotationClass }.thenReturn(OneToOne::class)
}
val supports = myHandler.supports(joinAnnotation)
assertThat(supports).isTrue()
}
Erg.mockito.exceptions.misusing.WurnTypeOfReturnValue:annotationType()不能返回KClassImpl annotationType()应该返回Class
如果你不确定为什么你会超过错误,请继续阅读。由于语法的性质,上面的问题可能会发生,因为:
onGeneric { this.annotationClass }.thenReturn(OneToOne::class)
我不明白为什么我会有一个错误,为什么这个错误与annotationType()(java注释方法)有关?
有人有办法解决这个问题吗?
我找到了解决问题的办法。
kotlin.annotation.annotationClass
是kotlin扩展函数:
/**
* Returns a [KClass] instance corresponding to the annotation type of this annotation.
*/
public val <T : Annotation> T.annotationClass: KClass<out T>
get() = (this as java.lang.annotation.Annotation).annotationType().kotlin as KClass<out T>
此函数调用java.lang.annotation.annotation.annotationType()
@Test
fun <T> supports_when_field_has_OneToOne_annotation_with_eager_fetch_type() {
val myHandler = MyHandler<T>()
val joinAnnotation = mock<OneToOne> {
on { this.fetch }.thenReturn(FetchType.EAGER)
on { (this as java.lang.annotation.Annotation).annotationType() }.thenReturn(OneToOne::class.java)
}
val supports = myHandler.supports(joinAnnotation)
assertThat(supports).isTrue()
}
有替代mock静态方法(PowerMock、MockK)的方法,但我没有测试。
如果有人有更好的建议,我会有兴趣看看。
是模拟抽象类:,而是接口。这是失败点: 如何模拟这段代码?
我尝试测试一个发送jms消息的类,但无法模拟JmsTemplate JmsProducer.class: JmsProducerTest。类别: 当我运行这个测试用例时,它给了我:java。lang.IllegalArgumentException:对象不是声明类的实例 你对这个问题有什么想法吗?
问题内容: 我正在寻找一种与Mockito进行验证的方法,即在测试过程中与给定的模拟没有任何交互。对于具有验证模式的给定方法,很容易实现这一点,但是我还没有找到完整模拟的解决方案。 我真正想要实现的是:在测试中验证,没有任何内容打印到控制台上。jUnit的总体思路如下: A 有很多方法,我真的不想用单独的验证方法来验证每个方法,而… 因此,我希望,如果有一个简单的解决方案,鉴于我具有良好的测试覆盖
我正在寻找一种方法来验证Mockito,在测试期间没有与给定的模拟进行任何交互。对于具有验证模式的给定方法,很容易实现这一点,但是我还没有找到完整模拟的解决方案。 我真正想要实现的是:在测试中验证,控制台上没有打印任何get。jUnit的总体思路如下: 一个有很多方法,我真的不想用单独的verify来验证每一个方法,对于。。。 所以我希望,如果有一个简单的解决方案,鉴于我有一个良好的测试覆盖率,我
我正在为我的服务层编写单元测试。我的服务层有多个自动生成的字段。我想只模拟其中一个和其他初始化为自动驾驶。 服务接口 服务实现 测试类 我只想嘲笑productRepository字段,但不想嘲笑productManager 问题是productManager 是否可以自动初始化它们?就像它们在运行带有完全加载的上下文的Spring引导应用程序时被初始化一样。
问题内容: 我使用,并且需要模拟其行为。由于不可能直接模拟,因此我创建了一个接口 Clock.java JodaTime.java 这是我要测试的方法 如您所见,依赖于当前时间相对于[4 PM-7PM] EST时间间隔和托运人名称的时间。由于Shipper将通过参数传递,因此我们可以对其进行单元测试。但是我需要嘲笑时间。所以这是我尝试的 自从我在下午6点通过考试以来,该测试应该会失败,但这是下午4