僅出于測(cè)試方法而不在實(shí)際代碼本身中使用它的目的而添加 return 語句是不好的做法嗎?作為一個(gè)示例,我正在測(cè)試一個(gè) read 方法,然后是一系列方法,這些方法最終創(chuàng)建了一個(gè)對(duì)象,該對(duì)象的屬性從它正在讀取的文件的行中吸收。據(jù)我了解,可以使用 Mockito 測(cè)試讀取方法,而無需添加返回語句?;蛘呖梢詼y(cè)試是否readPerLine調(diào)用了另一種方法 ( ),但我還沒有找到合適的測(cè)試程序來做到這一點(diǎn)。如果使用正確的編碼程序,這兩個(gè)選項(xiàng)可能意味著我的一般問題不相關(guān),如果是,請(qǐng)告訴我。然而,目前以下兩個(gè)選項(xiàng)似乎是測(cè)試(部分)讀取方法的最簡(jiǎn)單方法:添加一個(gè) return 語句,其中包含該方法讀入的行數(shù)組,該語句在方法結(jié)束時(shí)執(zhí)行。通過測(cè)量對(duì)象的屬性是否正確來測(cè)試讀取方法和創(chuàng)建對(duì)象的后續(xù)方法的組合。并通過單獨(dú)測(cè)試后續(xù)方法。這不是首選,因?yàn)殡p重錯(cuò)誤,讀取方法中的 1 和后續(xù)方法的概念設(shè)計(jì)中的 1 可能會(huì)在此測(cè)試期間抵消,但會(huì)導(dǎo)致讀取壽命錯(cuò)誤。修改 (read) 方法,使其返回一個(gè)行數(shù)組,該數(shù)組從 Main 傳遞給后續(xù)方法。我目前編寫的 read 方法的示例代碼:public void readFile(String filename) { FileReader reader; BufferedReader br; String line = null; try { br = new BufferedReader(new FileReader(filename)); while ((line = br.readLine()) != null) { readPerLine(line); //converts line into properties for an object. } br.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }所以我還沒有解決下面的困境;我知道有時(shí)您需要重寫您的方法以進(jìn)行測(cè)試。但我不知道添加功能,例如實(shí)際代碼未使用但僅用于測(cè)試的返回語句,是好還是壞的做法。另外,如果我這樣做,我仍然沒有完全測(cè)試讀取方法,調(diào)用另一個(gè)方法仍然沒有測(cè)試?;蛘撸绻沂紫葢?yīng)用適當(dāng)?shù)亩Y儀,是否根本不應(yīng)該出現(xiàn)這種困境。
Java不好的做法:將return語句添加到僅用于測(cè)試的方法?
繁星點(diǎn)點(diǎn)滴滴
2022-06-04 17:16:43