日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Junit 单元测试 Method wrap in org.json.JSONObject not mocked

發(fā)布時間:2024/3/13 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Junit 单元测试 Method wrap in org.json.JSONObject not mocked 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天在運行單元測試時報了一個錯誤
java.lang.RuntimeException: Method wrap in org.json.JSONObject not mocked. See http://g.co/androidstudio/not-mocked for details

但是將測試代碼放到 AndroidTest 中,運行結(jié)果正常。這是因為 org.json.JSONObject 被包含在 android.jar 中。而用于運行單元測試的 android.jar 文件不包含任何實際的代碼(實際的代碼由程序所運行在的 Android 真實設(shè)備提供),相反,所有的方法拋出異常(默認情況下)。

因此需要確保您的單元測試只是測試你的代碼,不依賴于 Android 平臺的任何特定行為。

但是由于調(diào)試效率問題,使用 Junit 進行代碼測試肯定比跑 AndroidTest 來的快。

解決方案:

  • 既然沒有 json 包,那就引入 json 包 https://mvnrepository.com/artifact/org.json/json/20190722
    gradle 選項卡的代碼和實際使用的有不小的差異,直接從 Builder 選項卡中復(fù)制(把jar去掉)即可
  • dependencies {testImplementation 'org.json:json:jar:20190722' }
  • 在 {@projectName}/{@moduleName}/build.gradle 文件中添加以下內(nèi)容。
    使得可以讓本該拋出錯誤的代碼,返回一個默認值,諸如 null,0,false 等。
  • android {testOptions { unitTests.returnDefaultValues = true} }

    另外,要注意一點,Unit Test 應(yīng)該是盡可能獨立的。對一個 class 的 Unit Test 不應(yīng)該再和其他 class 有任何交互。

    總結(jié)

    以上是生活随笔為你收集整理的Android Junit 单元测试 Method wrap in org.json.JSONObject not mocked的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。