jUnit for file reader

时间:2017-08-08 18:05:49

标签: java unit-testing junit

我有一个从txt文件中读取的方法,并使用文件中存在的单词填充列表。 该方法是计算并返回最重复的单词。 如果我想为此编写一个jUnit。考虑到文件正在频繁更改的事实,我应该如何测试该方法的corectess。

3 个答案:

答案 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个职责:

  1. 阅读文件
  2. 填充列表
  3. 找到最重复的单词
  4. 你应该拆分这个方法,这样你就可以使用只有一个责任的较小的类来编辑。

    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;输入导致确定性的可测试输出。