用PowerMockito來mock私有方法(轉)

 

 話說咱們作的所謂的接口測試真的是不三不四啊,測的是controller層,那叫接口木??!!但是老大們說寫的是接口測試,那就接口吧!html

    自接手寫這個接口測試不久,不少人,包括一個關係比較好的架構師就跟我說,寫這個很麻煩啊,代碼很亂,你得mock一堆。java

    既然已經跳進去了,那就遊一下子吧。爲了mock,可謂想盡了辦法啊,從通常的mock工具mockito,到java的反射,最後發現一個強大的工具——PowerMockito   他竟然可以mock私有方法。雖然,最後被老大們說私有方法是不該該mock的用PowerMockito來mock私有方法(慎重!),好吧,那我記錄下總能夠把,或許之後仍是會用到呢。如下是一個例子:架構


    //模擬 threadController的 doShowChildrens私有方法
    val postCountOf24HourMap= new HashMap[String, Int]()
    postCountOf24HourMap.put("1009",26)
    postCountOf24HourMap.put("1010",90)
    mav.addObject("postCountOf24HourMap", postCountOf24HourMap)工具


    var childrensMap =new HashMap[String,ForumDynamicInfo]()
    val forumDynamicInfo:ForumDynamicInfo  = new ForumDynamicInfo
    forumDynamicInfo.setRssCount(50) //設置關注數
    childrensMap.put("1010",null)
    childrensMap.put("1009",forumDynamicInfo)
    mav.addObject("childrensMap",childrensMap)post

    var childrens = new LinkedList[Forum]()
    val childForum = new Forum
    childForum.setFid(1009)
    childForum.setName("測試版塊")
    childForum.setDescription("記錄下你的心情吧")
    childForum.setIcon("http://www.icon.com/icon.jpg")
    childForum.setIconUrl("http://www.19lou.com")
    val   moderator = new Moderator
    moderator.setUserName("版主")
    childForum.setModeratorList(List(moderator))
    childrens.add(childForum)
    mav.addObject("childrens",childrens)測試


    PowerMockito.doReturn(mav).when(threadControllerSpy, "doShowChildrens",mav,forum);htm

 

http://blog.sina.com.cn/s/blog_6176c38201014dg1.htmlblog

相關文章
相關標籤/搜索