【问题标题】:How to test given code using mockito如何使用 mockito 测试给定的代码
【发布时间】:2017-08-29 09:20:58
【问题描述】:

我想测试fan.setState方法是否被调用

class OffState implements State {

    @Override
    public void changeState(Fan fan) {
        fan.setState(new OnState());
    }

}

【问题讨论】:

    标签: java unit-testing mockito tdd


    【解决方案1】:

    像这样:

    @RunWith(MockitoJUnitRunner.class)
    public class OffStateTest {
    
        @Mock
        private Fan fan;
    
        @Test
        public void testChangeState() {
            //Arrange
            OffState offState = new OffState();
    
            //Act
            offState.changeState(fan);
    
            //Assert
            Mockito.verify(fan).setState(Mockito.any(OnState.class));
        }
    }
    

    【讨论】:

    • @Nkosi:我假设OnState.equals() 方法可以解决这个问题。我开始编写测试用例的 ArgumentCaptor 形式,但觉得这可能只会混淆问题。无论如何,使用Mockito.any() 是让它通过的最简单方法,如果需要,OP 可以继续使用自定义匹配器或 ArgumentCaptor。谢谢!
    • 但如果我使用任何 verify(fan).setState(Mockito.any(OffState.class));或 verify(fan).setState(Mockito.any(OnState.class));它仍然有效
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多