Android Junit 单元测试 Method wrap in org.json.JSONObject not mocked
今天在運(yùn)行單元測(cè)試時(shí)報(bào)了一個(gè)錯(cuò)誤
java.lang.RuntimeException: Method wrap in org.json.JSONObject not mocked. See http://g.co/androidstudio/not-mocked for details
但是將測(cè)試代碼放到 AndroidTest 中,運(yùn)行結(jié)果正常。這是因?yàn)?org.json.JSONObject 被包含在 android.jar 中。而用于運(yùn)行單元測(cè)試的 android.jar 文件不包含任何實(shí)際的代碼(實(shí)際的代碼由程序所運(yùn)行在的 Android 真實(shí)設(shè)備提供),相反,所有的方法拋出異常(默認(rèn)情況下)。
因此需要確保您的單元測(cè)試只是測(cè)試你的代碼,不依賴于 Android 平臺(tái)的任何特定行為。
但是由于調(diào)試效率問(wèn)題,使用 Junit 進(jìn)行代碼測(cè)試肯定比跑 AndroidTest 來(lái)的快。
解決方案:
gradle 選項(xiàng)卡的代碼和實(shí)際使用的有不小的差異,直接從 Builder 選項(xiàng)卡中復(fù)制(把jar去掉)即可
使得可以讓本該拋出錯(cuò)誤的代碼,返回一個(gè)默認(rèn)值,諸如 null,0,false 等。
另外,要注意一點(diǎn),Unit Test 應(yīng)該是盡可能獨(dú)立的。對(duì)一個(gè) class 的 Unit Test 不應(yīng)該再和其他 class 有任何交互。
總結(jié)
以上是生活随笔為你收集整理的Android Junit 单元测试 Method wrap in org.json.JSONObject not mocked的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 过程控制实验装置
- 下一篇: libmudbus库使用的一二事