我有一个从txt文件中读取的方法,并使用文件中存在的单词填充列表。 该方法是计算并返回最重复的单词。 如果我想为此编写一个jUnit。考虑到文件正在频繁更改的事实,我应该如何测试该方法的corectess。
答案 0 :(得分:0)
该文件应该是方法的参数或该方法的类的实例字段
通过这种方式,您可以通过提供掌握数据的文件对单元进行单元测试,并且您知道如何断言它们。
例如使用参数方式:
public String findMostRepeatedWork(File file){
...
}
所以你可以轻松地将其单元化:
@Test
public void findMostRepeatedWork(){
// fixture
File myTestFile = ...;
// action
new MyClassToTest.findMostRepeatedWork(myTestFile);
// assertion
...
}
答案 1 :(得分:0)
Junit不适用于任何占用资源的测试(文件,dB或网络)
答案 2 :(得分:0)
正如@jaibalaji所写,JuintTests不应该依赖JVM内存之外的资源。
因此,第一步必须是使代码处于测试(剪切)独立于实际文件。
我有一个从txt文件中读取的方法,并使用文件中存在的单词填充列表。该方法是计算并返回最重复的单词。
在这句话中你提到了3个职责:
你应该拆分这个方法,这样你就可以使用只有一个责任的较小的类来编辑。
class TextAnalyser { 私人最终WordListBulder wordListBulder; //将String转换为单词列表 私人最终WordCountAnalyser wordCountAnalyser; public TextAnalyser(WordListBulder wordListBulder,WordCountAnalyser wordCountAnalyser){ this.wordListBulder = wordListBulder; this.wordCountAnalyser = wordCountAnalyser; }
public String findMostRepeatedWordIn(MyFileReader myFileReader){
String fileContent = myFileReader.readContent();
List<String> wordList = wordListBulder.crerateWordListFrom(fileContent);
return wordCountAnalyser.findMostRepeatedWordIn(wordList);
}
此代码太简单而无法并且不需要进行UnitTested。 模块 - 和/或验收测试将显示此方法有效。
现在要测试的行为是在班级WordCountAnalyser
中。它有一个简单的假#34;假的&#34;输入导致确定性的可测试输出。