“Invalid place to record expectations”的解決方案

這兩天在慢慢學junit,在寫好一個簡單的項目,要做單元測試時,打算從servlet開始測試,但是一上來就碰到了HttpServletRequest和HttpServletResponse這兩個傢伙。因爲是接口,無法實例化,又不想自己寫一個實現類,於是想到用jmockit來模擬這倆貨。

    google被封,找jmockit的下載地址着實費勁,不過最終還是找到,地址是:http://jmockit.github.io。在上邊下載好jmockit並導入之後,開始找教程。網上的教程一大把,很多都是轉載來轉載去的,我也就不再轉了,提供鏈接就好:jmockit(很詳細的一份教程,急性子表示還沒仔細看,只是找了自己需要的部分,試用了一下)

Jmockit使用技巧(手機百度到的,感覺還挺清晰的)

JMockit學習筆記(同樣是很不錯的教程)

    至於使用過程中遇到的classpath中junit和jmockit的順序錯誤,或者使用了“簡潔版”jre的錯誤,解決方案也已經有了,我也按照那些解決方案一一修正,但是,修好運行測試的時候,還是出現了“Invalid place to record expectations”的錯誤,百度之,無果…着實煩惱了一陣。後來看了Expectations的構造函數,及之後的調用代碼,判定是context出錯,於是,又把思維導回到classpath中,多次確認沒有問題之後,發現,自己的測試類的聲明是這樣的:

pubic class XXServletTest extends TestCase{...

原以爲這個是不影響的,但刪除了對TestCase的繼承之後,運行正常了。想來是因爲剛開始看junit的書的時候,書上的例子都是繼承TestCase類的,於是自己也就默默保留了這個習慣,沒想到在這裏出了問題。不過,總算還好,誤打誤撞,還是繞出來了。

    至於爲什麼讓測試類繼承TestCase類之後,context會出問題,暫時還沒去探究,所以先暫且記下這個問題,以後再找具體的原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章