僅出于測試方法而不在實際代碼本身中使用它的目的而添加 return 語句是不好的做法嗎?作為一個示例,我正在測試一個 read 方法,然后是一系列方法,這些方法最終創(chuàng)建了一個對象,該對象的屬性從它正在讀取的文件的行中吸收。據(jù)我了解,可以使用 Mockito 測試讀取方法,而無需添加返回語句。或者可以測試是否readPerLine調(diào)用了另一種方法 ( ),但我還沒有找到合適的測試程序來做到這一點。如果使用正確的編碼程序,這兩個選項可能意味著我的一般問題不相關(guān),如果是,請告訴我。然而,目前以下兩個選項似乎是測試(部分)讀取方法的最簡單方法:添加一個 return 語句,其中包含該方法讀入的行數(shù)組,該語句在方法結(jié)束時執(zhí)行。通過測量對象的屬性是否正確來測試讀取方法和創(chuàng)建對象的后續(xù)方法的組合。并通過單獨測試后續(xù)方法。這不是首選,因為雙重錯誤,讀取方法中的 1 和后續(xù)方法的概念設(shè)計中的 1 可能會在此測試期間抵消,但會導(dǎo)致讀取壽命錯誤。修改 (read) 方法,使其返回一個行數(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(); } }所以我還沒有解決下面的困境;我知道有時您需要重寫您的方法以進行測試。但我不知道添加功能,例如實際代碼未使用但僅用于測試的返回語句,是好還是壞的做法。另外,如果我這樣做,我仍然沒有完全測試讀取方法,調(diào)用另一個方法仍然沒有測試?;蛘?,如果我首先應(yīng)用適當(dāng)?shù)亩Y儀,是否根本不應(yīng)該出現(xiàn)這種困境。
1 回答

三國紛爭
TA貢獻1804條經(jīng)驗 獲得超7個贊
我建議不要在方法中添加 return 語句來啟用測試,而是重新設(shè)計方法以分離一些功能。
我認(rèn)為問題出在這里:
readPerLine(line); //converts line into properties for an object.
也許你在這種方法上做得太多了。您可以將其分解為幾種不同的方法,例如:
讀取該行以獲取一個 String 數(shù)組
將字符串轉(zhuǎn)換為正確的數(shù)據(jù)類型
構(gòu)建你的對象并設(shè)置它的屬性
如果您這樣做,您可以檢查每個步驟的功能并為每個步驟進行測試。在測試 main 方法readFile(String filename)
時,您可以使用 Mokito 檢查是否使用正確的參數(shù)調(diào)用了每個方法
添加回答
舉報
0/150
提交
取消