zoukankan      html  css  js  c++  java
  • 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方法抛出异常的行为
  • 相关阅读:
    memset使用技巧
    04.碰撞反应
    03.键盘状态跟踪与精灵删除
    02.基本动作
    01.基本图形
    00.入门
    03.交互--鼠标,键盘
    02.action--新增精灵知识点
    01.helloworld--标签
    05.声音
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/9546571.html
Copyright © 2011-2022 走看看