• spring结合mockito


    转载:https://blog.csdn.net/apexlj/article/details/50298029

    mockito可模拟依赖对象的行为,从而简化跨类的测试。

    maven获取mockito:

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
    </dependency>

    以下例:

    1. 被测类:ConnInfoService
    2. 依赖类:ConnInfoAccessor
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "/conf/test-context.xml")
    public class ConnInfoServiceTest {
    
    
        @Autowired
        @InjectMocks
        private ConnInfoService connInfoService;
    
        @Mock
        private ConnInfoAccessor connInfoAccessor;
    
        @Before
        public void before() throws Exception {
            MockitoAnnotations.initMocks(this);
        }
    
        /**
         * Method: getConnInfo(String connId)
         */
        @Test
        public void testGetConnInfo() throws Exception {
            GPSConnInfo gpsConnInfo = new GPSConnInfo();
            gpsConnInfo.setAppKey("appKey");
            gpsConnInfo.setGpsNodeId("node1");
            when(connInfoAccessor.getConnInfo("connId")).thenReturn(gpsConnInfo);
            Assert.assertEquals(gpsConnInfo, connInfoService.getConnInfo("connId"));
        }
    
        /**
         * Method: saveConnInfo(String connId, GPSConnInfo gpsConnInfo)
         */
        @Test(expected = GPSServiceException.class)
        public void testSaveConnInfo() throws Exception {
            GPSConnInfo gpsConnInfo = new GPSConnInfo();
            gpsConnInfo.setAppKey("appKey");
            gpsConnInfo.setGpsNodeId("node1");
            doThrow(new DataAccessException("e") {
                @Override
                public String getMessage() {
                    return super.getMessage();
                }
            }).when(connInfoAccessor).saveConnInfo("connId", gpsConnInfo);
            connInfoService.saveConnInfo("connId", gpsConnInfo);
        }
      1. @InjectMocks用于标识被测对象,从而把由@mock表示的依赖对象自动注入到被测对象中
      2. @Mock用于表示依赖对象
      3. MockitoAnnotations.initMocks(this);用于初始化以上注入动作
      4. when(connInfoAccessor.getConnInfo("connId")).thenReturn(gpsConnInfo)用于模拟带返回值的getConnInfo方法的处理
      5. doThrow(new DataAccessException("e") { 
        @Override 
        public String getMessage() { 
        return super.getMessage(); 

        }).when(connInfoAccessor).saveConnInfo("connId", gpsConnInfo);
        用于模拟无返回值的saveConnInfo方法抛出异常的行为
  • 相关阅读:
    设计模式之桥接模式
    设计模式之适配器模式
    设计模式之代理模式
    设计模式之建造者模式
    设计模式之抽象工厂模式
    设计模式之工厂方法模式
    设计模式之简单工厂模式
    设计模式之原型模式
    api接口测试的步骤
    3种优化回归测试的方法
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/9546571.html
Copyright © 2020-2023  润新知