我有這樣一個類:Mock對象並將其分配給實例和靜態變量的方法
// This class will process the incoming flat files from various data sources
public class FileProcessor {
private String fileName;//Say filetype_datasource_yyyyMMddHHmmss.dat
private String fileType;
private String fileNameWithoutExtension;
private String fileSource;
private String timestamp;
private boolean validFileName;
private static final Logger logger = Logger.getLogger(FileProcessor.class);
public FileProcessor(String fileName) {
this.fileName = fileName;
}
public void validateFileName() {
fileNameWithoutExtension = fileName.substring(0, fileName.indexOf("."));
String[] fileNameSplit = fileName.split("_");
fileType = fileNameSplit[0];
logger.info("File type: " + fileType);
fileSource = fileNameSplit[1];
logger.info("File source: " + fileSource);
timestamp = fileNameSplit[2];
logger.info("File timestamp: " + timestamp);
validFileName = validateFileType() && validateFileSource() && validateTimestamp();
}
private boolean validateFileType() {
boolean result;
//Validate as per business rules
...
return result;
}
private boolean validateFileSource() {
boolean result;
//Validate as per business rules
...
return result;
}
private boolean validateTimestamp() {
boolean result;
//Validate as per business rules
...
return result;
}
}
這裏美中不足的是,validateFileName()
使用了一些實例變量(fileNameWithoutExtension, fileType, fileSource, timestamp, validFileName
),和一個靜態變量(logger
)。
是編寫JUnit測試案例嘲諷分配給該方法validateFileName()
使用的實例和靜態變量的對象的最佳方式?
我是Junit和對象嘲笑的初學者,並且可以使用任何解決問題的模擬框架。謝謝。
你的類沒有任何依賴關係(也許除了記錄器,但我想你不想測試班級記錄的內容)。沒有什麼可以嘲笑的。只需創建一個類的實例,調用該方法,並查看它是否產生預期的結果。 –