android靜態方法如何測試,android – 如何使用mock()和spy()測試靜態方法

通常情況下,如果你最終使用PowerMock,這是一個很好的跡象,表明你最有可能是錯誤的方式.

如果不是直接引用畢加索,而是創建一個組件,它的職責是加載圖像,讓我們說類ImageLoader.這會給你什么?

>關注點分離:如果明天你決定轉移到Glide,你不應該改變你使用Picasso的每一個類,你只需要改變ImageLoader的實現.其他組件對這些更改并不了解,因為它們依賴于抽象,而不依賴于實現

> Seam:這將允許您輕松模擬依賴項以執行單元測試

這將是我們的抽象:

class ImageLoader {

RequestCreator load(String url);

}

讓我們提供一個實現:

class ImageLoaderImpl implements ImageLoader {

private final Picasso picasso;

public ImageLoader(Context context) {

this.picasso = Picasso.with(context);

}

@Overrides

public RequestCreator load(String url) {

return picasso.load(url);

}

}

現在,在您需要Picasso的組件中使用ImageLoader.

因此,您的方法如下:

public RequestCreator requestCreatorFromUrl(String picUrl) {

return imageLoader.load(picUrl);

}

然后你的測試看起來像這樣:

@Test

public void test() {

ImageLoader imageLoader = Mockito.mock(ImageLoader.class);

RequestCreator expected = Mockito.mock(RequestCreator.class);

String TEST_URL = "https://www.some.url/img.jpg";

when(imageLoader.load(TEST_URL)).thenReturn(expexted);

RequestCreator actual = clazzToTest.requestCreatorFromUrl(TEST_URL);

assertEquals(expected, actual);

}

沒有模擬靜態方法,不需要PowerMock.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282805.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282805.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql經典的8小時問題-wait_timeout

2019獨角獸企業重金招聘Python工程師標準>>> 前段時間 現網突然頻繁報出 連接不上數據庫,偶滴的妖孽,其他地方都是用mysql,也沒遇到這個問題呀。 java.io.EOFExceptionat at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913…

Chrome DevTools — Network

記錄網絡請求 默認情況下,只要DevTools在開啟狀態,DevTools會記錄所有的網絡請求,當然,記錄都是在Network面板展示的。 停止記錄網絡請求 點擊Stop recording network log紅色圖標,當它變為灰色時,表示DevT…

Blazor University 中文版網站已上線

在學習 Blazor 的過程中,找到了一個網站 Blazor University(https://blazor-university.com)。發現網站內容非常詳實,正像首頁所說的:通過瀏覽本網站中的信息,我打算帶您從完全的新手到Blazor的所有方面的專…

android:paddingtop 百分比,相對層中的百分比寬度

相對層中的百分比寬度我正在為登錄進行表單布局。Activity在我的Android應用程序中。下面的圖片是我希望它看起來的樣子:我能夠通過以下方式實現這個布局XML..問題是,這有點麻煩。我不得不對主機EditText的寬度進行硬編碼。具體而言,我必須具…

MySQL 查看表結構簡單命令

一、簡單描述表結構,字段類型 desc tabl_name; 顯示表結構,字段類型,主鍵,是否為空等屬性,但不顯示外鍵。 例如:desc table_name 二、查詢表中列的注釋信息 select * from information_schema.columns wher…

簡單獲取任意app的URL Schemes

簡單說明 最近業務需要,一直在查詢App的scheme相關信息,找到一種比較可靠的方法,分享給大家 步驟如下: 在電腦上使用iTunes下載那個app下載完后,在itunes里點擊這個app,選擇->Show in Finder&#xff0c…

Java中short、int、long、float、double的取值范圍

一、基本數據類型的特點,位數,最大值和最小值。1、基本類型:short 二進制位數:16 包裝類:java.lang.Short 最小值:Short.MIN_VALUE-32768 (-2的15此方)最大值:Short.MAX_…

.Net之接口文檔精度丟失處理

目的最近兩天在給朋友講解如何使用ajax調用接口時候,我發現我用swagger調用接口返回的long類型的數據最后幾位都變成了0(例如:6974150586715898000),本來是以為sqlite數據庫不支持long類型導致我存進去的數據出了問題,然后我使用接…

android 訪問sqlite,android中訪問已有的sqlite數據庫

推薦文章每天進步記錄一點點話說經常性的操作svn出現各種問題,而度娘一直幫倒忙,是不是很手足無措.有時問題還是要記錄下來的.說不定還會有驚喜. 昨天遇到個問題,搜索了一下,發現第一條就是自己寫的.驚呆我了,更驚呆我的是,我是在csdn寫的,為什么在別的網站看到,完全一模一樣..…

Dnslog在SQL注入中的利用

參考文獻:www.anquanke.com/post/id/98096https://bbs.pediy.com/thread-223881.htm DNSlog在Web攻擊的利用 在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起DNS請求,這個時候就可以通過DNSlog把想獲得的數據外帶出來。 常用情況 S…

讓泛型的思維扎根在腦海——深刻理解泛型

1.前言往往一些剛接觸C#編程的初學者,對于泛型的認識就是直接跳到對泛型集合的使用上,雖然微軟為我們提供了很多內置的泛型類型,但是如果我們只是片面的了解調用方式,這會導致我們對泛型盲目的使用。至于為什么要使用泛型&#xf…

fgetcsv()函數

fgetcsv()函數。fgetcsv()函數可以讀取指定文件的當前行,使用CSV格式解析出字段,并返回一個包含這些字段的數組。語法格式如下:array fgetcsv(resource $handle [, int $length [, string $delimiter [, string $enclosure[,string $escape]]…

android 系統ui修改器,分享兩個效果 - Android 系統 UI 管理

SystemUIManage.gifDimming the System Bars (沉浸模式)知乎 和 Medium 中都使用到了這個效果,作為沉浸式閱讀模式。// This example uses decor view, but you can use any visible view.View decorView getWindow().getDecorView();int uiOptions View.SYSTEM_U…

打游戲要存進度-備忘錄模式

打游戲要存進度-備忘錄模式 學習自 《大話設計模式》 備忘錄模式漫談 備忘錄的這種設計思想是非常常見的,比如說圍棋游戲的悔棋,繪圖軟件的撤銷功能等等,都或多或少的使用了備忘錄模式來處理對象的狀態。 備忘錄(Memento): 在不破壞封裝性的前…

(10.1)Python學習筆記二

1、在項目工程中要模塊化測試一個開發的功能,在測試通過后交付給項目組其他人員繼續開發。要保證代碼開發的性能和效率以及可擴展性。 2、項目工程中的文件夾分類要功能模塊明確清晰,在python中引入某一個 文件夾下的文件可以使用如下方式: t…

利用lay-ui結合ajax實現分頁功能(不借助框架,簡單易懂)

效果圖: 1.創建html頁面 01.html(前臺文件) 2.創建index.php(后臺文件) ------------------熱身結束,開始正式分頁之旅------------------ 3.在html頁面中引入layui需要用到的css以及js,還有我們自己額外需要用到的jquery 4.在html文件中,將基本的分頁欄顯示出來 5.好啦,htm…

Linux系統壓縮及解壓縮

Linux系統解壓縮概述:本篇將介紹Linux系統中的壓縮和解壓縮的工具,以及歸檔工具(tar,cpio)compress/uncompress:對應 .Z 結尾的壓縮格式文件;gzip/gunzip:其對應的是 .gz 結尾的壓縮…

酷派手機android版本,系統版本迎來升級

系統版本迎來升級這個應該是兩個版本之間最大但是卻不那么直觀的不同了,因為從TD版酷派大神F1采用的CoolLife UI 5.0版本,再到聯通版酷派大神F1所搭載的CoolLife UI 5.5版本,它們之間經歷了一個比較不錯的升級。在圖標ICON,功能設…

學習RUNOOB.COM進度一

了解MongoDB 由C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。 特點 面向文檔,操作簡單容易 設置任何索引,實現更快排序 本地或者網絡創建數據鏡像&am…

最終用戶計算安全——特權訪問控制

本篇算是系列的第二篇,之前寫了一篇關于勒索軟件攻擊的,坦白說寫這樣的文很費腦子,而且喜歡看的讀者估計也不多…不過我覺得整理一下思路,對于通過最終用戶計算產品或方案來提升組織安全還是有很大的意義的。所以一邊喝著清茶吃著…