UT中使用ReflectionTestUtils.setField不能mock掉依赖问题解决_苦行僧-CSDN博客_reflectiontestutils.setfield
service - ReflectionTestUtils not working with @Autowired in Spring Test - Stack Overflow
获取对象的成员变量:
1
|
public static Object getField(@Nullable Object targetObject, String name)
|
给对象注入成员变量:
1
|
public static void setField(Class<?> targetClass, String name, @Nullable Object value)
|
调用成员方法:
1
|
public static <T> T invokeMethod(Object target, String name, Object... args)
|
单元测试时测试一个private私有方法时,我们第一想法可能是用java反射机制。
…
Method method = clazz.getDeclaredMethod(methodName, classes)
method.setAccessible(true);
method.invoke(obj, objects)
Spring 有一个好用的测试工具类ReflectionTestUtils
…
ReflectionTestUtils.invokeMethod(Object target, String name, Object… args)
即可完成调用私有方法。
maven依赖:
org.springframework
spring-test
4.1.6.RELEASE
test
————————————————
版权声明:本文为CSDN博主「lijie2049」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/lijie2049/article/details/84732723
1
|
Unexpected exception, expected<exception.DomainException> but was<java.lang.reflect.InvocationTargetException>
|
反射,异常处理
What Causes java.lang.reflect.InvocationTargetException? | Baeldung
1 2 3 4 5 6 7 8 9 10
|
val targetClass = DomainServiceImpl::class.java val method: Method = targetClass.getDeclaredMethod( "handleExitedParentsDomainName", String::class.java ) method.setAccessible(true) val exception: Exception = assertThrows(InvocationTargetException::class.java) { method.invoke(domainService, domainName) } Assertions.assertThat(exception.cause!!.javaClass).isEqualTo(DomainException::class.java)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
private fun getSubDomainPOList(domainName: String, withUser: Boolean, userId: String? = null): List<DomainPO>? val method: Method = targetClass.getDeclaredMethod( "getSubDomainPOList", String::class.java, Boolean::class.java, String::class.java ) private fun getDomainListByInstanceId( instanceId: String, withUser: Boolean? = null, userId: String? = null ): List<DomainPO> val method: Method = targetClass.getDeclaredMethod( "getDomainListByInstanceId", String::class.java, Boolean::class.javaObjectType, String::class.java )
|
Java类型与Kotlin类型对应关系_WongKyunban的博客-CSDN博客
MockMvc是由spring-test包提供,实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,使得测试速度快、不依赖网络环境。同时提供了一套验证的工具,结果的验证十分方便。
(1) mockMvc.perform执行一个请求。
(2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。
(3) ResultActions.param添加请求传值
(4) ResultActions.accept()设置返回类型
(5) ResultActions.andExpect添加执行完成后的断言。
(6) ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如处使用print()输出整个响应结果信息。
(7) ResultActions.andReturn表示执行完成后返回相应的结果。