java帶參數的構造方法有幾種 java中構造器和構造方法的區(qū)別?
構造函數是一種構造函數,它在創(chuàng)建對象時初始化成員變量。默認情況下,它是一個無參數構造函數。構造函數是一種特殊的方法。主要用于對象創(chuàng)建時的初始化,也就是給對象成員變量賦一個初始值。在創(chuàng)建對象的語句中,它
構造函數是一種構造函數,它在創(chuàng)建對象時初始化成員變量。默認情況下,它是一個無參數構造函數。
構造函數是一種特殊的方法。主要用于對象創(chuàng)建時的初始化,也就是給對象成員變量賦一個初始值。在創(chuàng)建對象的語句中,它總是與
事件
例如,DateFormat的formatCurrentTime()方法如下,代碼如下:
公共類日期格式{
public static final SIMPLE DATE FORMAT SIMPLE _ DATE _ FORMAT new SIMPLE DATE FORMAT(# 34 yymmdd hhmmssz # 34)
公共靜態(tài)字符串formatCurrentTime() {
return SIMPLE_DATE_(新日期())
}
}
我現(xiàn)在期望判斷formatCurrentTime方法返回的值是否是SIMPLE_DATE_FORMAT對象格式化的值(當然這段代碼一定是第一眼看到的,所以不要 我不認為它 沒什么意義,實際工作中確實有對無聊的東西的需求)。
為了滿足這個要求,我只需要判斷SIMPLE_DATE_(new Date())是否等于()方法調用的返回值。但是很明顯,formatCurrnetTime方法內部調用SIMPLE_Date_ method時傳入的參數直接增加了一個DATE對象,而我在外部顯式調用SIMPLE_DATE_ method時再次創(chuàng)建的DATE對象肯定不是這個,所以我需要mock類的無參數構造函數來保證每次新建時返回的都是同一個對象。
測試代碼如下:
實現(xiàn)
@RunWith()
@PrepareForTest()
公共類DateFormatTest {
@以前
公共void設置(){
()
}
@測試
public void testFormatCurrentTime()引發(fā)異常{
日期日期新日期()
PowerMockito.whenNew()。不帶參數()。然后返回(日期)
(_DATE_(日期),())
}
}
與上面的代碼一樣,只需要模擬日期類的無參數構造函數:
解釋一下像JDK這樣的類的模擬操作過程,這里用到powermock。關于Powermock的配置,請參見文章mockito與Powermock工具的mock構造器合作。
步驟如下:
1.在測試類上使用注釋@RunWith()。
2.注意@ prepareforest聲明要處理的類:
3.調用mockStatic方法的Mockdate類(調用PowerMockito的mock Date類也可以。畢竟這里需要的只是mockStatic構造方法。我用了Mockstatic,因為我在wiki上看過它的介紹,地址在這里:)。
最后,根據這里的需要,設置Date 的無參數構造函數,模擬構造函數的api用法可以在文章Mockito與powermock工具模擬構造函數合作中找到。