簡體   English   中英

適用於Android的帶有SQLCipher的Android JUnit測試

[英]Android JUnit Test with SQLCipher for Android

在我的應用程序中,我使用SQLCipher加密我的數據庫。 起初,我忘記將icudt46l.zip添加到我的應用程序資產文件夾中,但出現異常, net.sqlcipher.database.SQLiteException: not an error

這很容易修復,因為我只需要將文件復制到資產文件夾即可。 現在我的應用程序即將完成,我需要編寫一些自動化測試。 首先,我認為JUnit測試將是一個不錯的選擇。 所以我創建了一個簡單的ActivityUnitTestCase開始。 不幸的是,每次我開始測試時,都會得到net.sqlcipher.database.SQLiteException: not an error

我希望你能告訴我我在做什么錯。 我也將icudt46l.zip也復制到我的測試項目資產文件夾中,但這一次它沒有解決。

用於Android的SQLCipher構建為直接在設備/模擬器上運行,而JUnit測試通常直接在桌面Java VM內運行。 我們發現能夠在各種設備/ Android平台上測試適用於Android的SQLCipher並使用單獨的應用程序作為測試套件很有幫助。 有關測試套件的更多信息,請參見此處

今天發生了一些我無法理解也無法解釋的事情。 我剛剛從所有設備/仿真器中刪除了該應用程序,然后重新安裝了它。 完成此步驟后,我可以運行Android JUnit測試,而不會出現錯誤。 我不知道發生了什么變化,但現在效果很好。

正如Nick Parker所說,普通的JUnit測試將直接在JVM中運行,但在Android上,JUnit測試則有些不同。 他們需要設備或仿真器才能運行。 這就是為什么我不能在我的JUnit測試中使用Robolectric但現在可以正常使用Android JUnit測試的原因。

目前,我在用於POJO的TestCases,用於測試我的活動布局的ActivityUnitTestCases和用於功能測試的ActivityInstrumentationTestCase2之間混合使用。 我也使用Robotium進行功能測試。

再說一次,我沒有任何解釋為什么它現在可以工作,但是要真實地說:只要它能工作,我就不在乎。 所以..如果有人有相同的奇怪行為,我只能建議在運行測試之前刪除該應用程序並重新安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM