天天看點

用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("記錄下你的心情吧")

    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