用PowerMockito來mock私有方法(轉)


 

 話說我們做的所謂的接口測試真的是不倫不類啊,測的是controller層,那叫接口木??!!可是老大們說寫的是接口測試,那就接口吧!

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

    既然已經跳進去了,那就游一會兒吧。為了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)

    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);

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM