`
regbin
  • 浏览: 56498 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JMockit使用实例<三>验证被Mock的类的某个方法是否被调用

阅读更多
  • 关键词:Verifications 想验证被Mock的类的某个方法是否被调用
  • 单元测试类清单
  • /**
     * 演示验证被Mock的类的某个方法是否被调用
     * @sina weibo regbin@tom.com
     */
    public class ServiceTest {
    
        @Mocked
        Remote remote;
    
        @Test
        public void testDoFuncYes() {
            Service service = new Service();
            service.doFunc(true, 1);
            new Verifications() {
                {
                    remote.doSomething(anyInt);//表示这个方法会被执行
                    //remote.doSomething(1);//表示这个方法会被执行,而且参数是1;在当前case,会通过
                    //remote.doSomething(2);//表示这个方法会被执行,而且参数是2;在当前case,这个会不被通过
    
                }
            };
    
        }
    
        @Test
        public void testDoFuncNo() {
            Service service = new Service();
            service.doFunc(false, 1);
            new Verifications() {
                {
                    remote.doSomething(anyInt);
                    times = 0;//调用次数,0表示上面方法不会被调用
                }
            };
        }
    
        private static class Remote {
            public void doSomething(int a) {
            }
        }
    
        private static class Service {
    
            private Remote remote = new Remote();
    
            public void doFunc(boolean flag, int a) {
                if (flag) {
                    remote.doSomething(a);
                }
            }
        }
    
    }

     

  • 小结
    有时候我们想验证某个类的方法是否被正确调用的时候,上述Verifications就派上用场了
  • 分享到:
    评论

    相关推荐

      JMockit学习分享

      在此示例中,我们首先使用`@Mocked`注解创建了一个`UserRepository`的mock对象,并使用`@Tested`注解指定了被测试的`UserService`类。接下来,我们定义了一个`Expectations`块来记录预期行为,然后调用`userService....

      jmockit总结

      在测试的重放阶段,这些期望会被用来验证实际的调用是否符合预设的模式,比如调用参数、调用次数等。这有助于确保代码按预期执行。 7. **两种指定依赖的方式**: - 传统方式是在 `Expectations` 块中创建模拟实例...

      JMockit基础教程

      2. **状态导向(State-oriented)**:使用`MockUp&lt;GenericType&gt;`类来改变类的实例状态。这种方式允许对类的行为进行全局修改,而不局限于特定方法的期望。 JMockit的一个显著优点是其简洁的API,它避免了传统Mock...

      jmockit中文教程

      - **伪装未被实现的类**:即使某个类没有被完全实现,也可以通过JMockit对其进行伪装。 #### 代码覆盖 代码覆盖率是衡量测试质量的重要指标之一,JMockit提供了相关的工具来评估测试覆盖情况: - **行覆盖**:...

      利用PowerMock模拟静态方法和私有方法的示例

      PowerMock允许我们使用`@PrepareForTest`注解指定需要模拟的类,并通过`PowerMockito.mockStatic`或`Mockito.when`来模拟私有方法。 下面是一段使用PowerMock模拟静态方法和私有方法的示例代码: ```java import ...

      jmockit-1.2

      4. **无侵入性(Non-Intrusive)**:JMockit不需要修改被测试代码,也不需要生成代理类或实现接口,这使得它在处理遗留代码或第三方库时特别有用。 5. **AOP(面向切面编程)**:JMockit利用Java的动态代理机制,...

      powermock实战手册

      6. **验证模拟行为**:使用`verifyStatic`或`verify()`来检查模拟对象是否被正确地调用。 四、PowerMock的局限性 虽然PowerMock提供了强大的功能,但也有一些需要注意的限制,比如性能开销较大,可能会导致测试...

      jmock-1.2.0-jars.rar

      在 JMock 中,模拟对象是类的一个实例,它代替了真实对象在测试中的角色。你可以设置模拟对象的行为,例如返回特定值或抛出异常,以此来控制测试环境。通过这种方式,你可以专注于测试单个组件的行为,而不是整个...

    Global site tag (gtag.js) - Google Analytics