首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JAVA实战:如何让单元测试覆盖率达到80%甚至以上

(几乎不会使用)Mockito.when( 对象.方法名() ).thenReturn( 自定义结果 ):后面自定返回结果,需要和方法返回结果类型一致,Mockito.any():用于匹配任意类型的参数详细版...具体来说,Mockito.when()方法接受两个参数,一个是模拟对象的方法调用,另一个是指定的行为或返回值。当模拟对象的方法被调用时,Mockito就会按照when()方法中指定的方式进行处理。...同样需要注意的是,如果模拟对象的方法参数不是一个基本类型或String,则需要手动匹配参数。Mockito.any()它可以用于匹配任意类型的参数。...在测试代码中,当需要匹配方法的参数但不关心具体的参数值时,可以使用Mockito.any()方法来匹配参数。...mock中模拟Mockito.when( 对象.方法名() ).thenReturn( 自定义结果 ),方法名()中参数有的人会使用实际的参数,这样会导致模拟是无法找到正确的结果。

3.8K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java单元测试Mock工具Mockito介绍

    1、在测试环境中构建一些依赖的成本比较高 如一些硬件的操作,像串口和USB输入; 还有一些第三方依赖,像支付系统要调用很多外部支付网关,如果直接调用生产环境的网关就会产生脏数据的问题;...2、分而测之 以上面的例子来说,生产环境中就是要从硬件输入,那这块是不是不测试呢?...肯定是要测试的,不过分开来测,一部分测试软件上的流程,即从硬件输入后系统的处理流程是否正常,在一些异常下数据是否准确;而硬件输入的测试可以由单独的团队测试,这样就可以并行测试提高效率。...post.setTitle("test"); post.setAutor("Edward"); post.setUserId(123); Mockito.when...Mockito.when(..).thenReturn when传方法,thenReturn传递要返回的结果,如果when要带参数,一般是这样的格式, Mockito.anyInt(),Mockito定义了很多常用类型

    3.3K40

    用过举手!SpringBoot 单元测试利器-Mockito

    ,这里有一个公式用法,下面这段代码的意思为,当调用了某个 mock 对象的方法时,就回传我们想要的自定义结果 Mockito.when( 对象.方法名() ).thenReturn( 自定义结果 )...()方法,并且参数为3时,就返回id为200、name为I'm mock3的user对象 Mockito.when(userDao.getUserById(3)).thenReturn(...Mockito.when( 对象.方法名() ).thenReturn( 自定义结果 ),还提供了其他用法让我们使用 thenReturn 系列方法 当使用任何整数值调用 userService 的 getUserById...() 方法时,就回传一个名字为 I'm mock3 的 user 对象 Mockito.when(userService.getUserById(Mockito.anyInt())).thenReturn...的 getUserById() 时的参数是 9 时,抛出一个 RuntimeException Mockito.when(userService.getUserById(9)).thenThrow(new

    4K20

    Spock框架Mock对象、方法经验总结

    技术方案 本技术方案基于公司力推的Spock单元测试框架,spock是一款基于Groovy语言的单元测试框架,其基础也是Java的Junit,目前最新版已经到了2.0,但对Groovy和相应的Java版本要求较高...上述Demo在Mock方法的时候对参数进行了断言和处理,这也是Spock框架的一个特性,其他均为Groovy语法特性。...定时对象行为: Mockito.when(newutil.filter(Mockito.any())).thenReturn(true) 定义行为以后,就可以在Spock用例中正常使用...其他常用定义行为: Mockito.when(newutil.filter(Mockito.any())).thenReturn(null) Mockito.when(newutil.filter...通常我们需要构建返回对象,如果对象需要赋值的属性过多,可以使用初始化赋值的方法,下面是Mock一个返回list的方法返回值的Demo: Mockito.when(newser.selectAllService

    5.3K74

    Difference between @Mock, @InjectMocks and @Captor

    ;}单元测试注意的点在测试中发现一个特点,就是参数类型不会装箱操作,如果类型不匹配虽然不会报错,但是mock不会成功,mock成功只会是固定的执行某个类型的方法,估计是底层写死类型了。...())).thenReturn(new ServerUser());// 正确的示例when(serverUserDao.findById(anyLong())).thenReturn(new ServerUser...我们必须为模拟对象定义when-thenReturn 方法,以及在实际测试执行期间将调用哪些类方法。当我们需要使用模拟对象初始化所有内部依赖项才能正确运行该方法时,请使用@InjectMocks。...mockList.add("one"); Mockito.verify(mockList).add("one"); assertEquals(0, mockList.size()); Mockito.when...InjectMocksMyDictionary dic = new MyDictionary();@Testpublic void whenUseInjectMocksAnnotation_thenCorrect() { Mockito.when

    52251

    静态类参数无法传递问题

    前言今天在我写单元测试的时候突然发现一个奇怪的事情。我写入导入的某个断点,进入某个方法,居然发现它里面的一些参数值没有传过来。然后这一篇博客的主要目的是解释。为什么会产生这样的结果?怎么去解决?...跟着我的博客,一步一步去查找我的思路,然后去发现问题,解决问题。运行测试当我运行单元测试的时候,我就想着去看一下。他当前这个方法执行之后的一些参数的一些结果。然后就发现神奇的事情,他居然返回为空。...这就对一个方法进行了mock,然后在我仔细的研究之下,我还发现它提供了一个方法。你输入任意参数,它可以直接调用真实的方法。这样的话,他就可以直接把参数传递过去,你只需要在上面声明一个类型就好了。...(someValue);// 对其他方法进行正常访问Mockito.when(mockObject.someMethod()).thenCallRealMethod();Mockito.doCallRealMethod...(session);// 静态方法进行正常访问Mockito.when(SshCommon.hasFolder(anyString(), any(), any())).thenCallRealMethod

    19600

    spring junit单元测试

    所以建议是逐步开始,让团队切身能够体会到单元测试带来的收益再慢慢加码。 我们的项目基础技术架构是基于SpringCloud,做了一些基础的底层封装。...单元测试基础框架 既然项目是基于SpringCloud,那测试肯定会引入基础的spring-boot-test,底层的测试框架选择是junit。...(orderClient.bizInfoV3(Mockito.any())).thenReturn(R.data(storeInfoDTO)); Mockito.when(orderClient.getOrderCount...(orderClient.bizInfoV3(Mockito.any())).thenReturn(R.data(storeInfoDTO)); Mockito.when(orderClient.getOrderCount...代码当中实际上也提到了,就是junit5提供的@ParameterizedTest注解,配合@ValueSource, @CsvSource来使用,分别可以设置指定类型或者复杂类型到单元测试中,使用方法的参数接受

    1K60
    领券