我对Mockito,jUnit和TDD一般都很陌生,我尝试学习正确的TDD方法。我需要几个例子来启动我的大脑。所以请帮助我单元:如何使用jUnit和Mockito编写测试用例
所以我有一个方法getNameInc(String dirPath, String filenName)
。因此给定一个文件名如bankAccount.pdf
,并且如果在此文件夹中没有文件名bankAccount.pdf
,则返回bankAccountAA.pdf
。如果存在一个bankAccount.pdf
则return bankAccountBB.pdf
increment
是AA-ZZ
。当它达到ZZ
时,它会回滚到AA
。我已经实现了这个方法的逻辑。如何使用Mockiti和jUnit单元测试此方法?
编辑
这里是类和所涉及的方法。
public class PProcessor{
private final Map<Integer, String> incMap = new HashMap<Integer, String>();
private String getNameInc(String dirPath, String filenName){
String[] nameList = new File(dirPath).list(new FilenameFilter(){
public boolean accept(File file, String name) {
//only load pdf files
return (name.toLowerCase().endsWith(".pdf"));
}
});
//Return the number of occurance that a given file name appear
//inside the output folder.
int freq = 0;
for(int i=0; i<nameList.length; i++){
if(fileName.equals(nameList[i].substring(0, 8))){
freq++;
}
}
return incMap.get(freq);
}
private void generateIncHashMap(){
incMap.put(new Integer(0), "AA");
incMap.put(new Integer(1), "BB");
incMap.put(new Integer(2), "CC");
...
}
}
generateIncHashMap()
将在构造函数中调用预先生成散列图
我认为你错过了模拟的一点。模拟不应该实现任何逻辑。通常它只会根据测试用例返回硬编码值。 – 2011-05-17 20:27:45
@Mike:我已经实现了逻辑。 'getNameInc(String dirPath,String fileName)'方法已经由我实现。我只是想知道如何进行单元测试。它可以是mockito或普通的旧jUnit。我试图学习这个想法。 – 2011-05-17 20:31:45
很高兴你想使用TDD!但是,从你最后的评论中听到的声音就像你先写逻辑......这与TDD工作的方式相反。首先编写一个失败的测试,然后用真实的代码传递测试,然后重构该代码,使其更清晰,但除了通过测试之外,没有其他更多的工作。然后写另一个失败的测试。 Mockito在那里帮助你去除你的课程所依赖的复杂服务。你可以用与这个功能协作的类来更新你的问题吗? – alpian 2011-05-17 23:18:07