mercredi 27 mai 2015

how to write junit test cases for void function which prints output to console

I've two functions addKeywords and search which have void return type and search function prints results to the console. Here is the code

 void addKeywords(String video)throws IOException{


    InputStreamReader ip = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(ip);

    Integer previousVal=0;

    if(!videoKeyword.containsKey(video) && videoNames.contains(video)){
        videoKeyword.put(video,new HashSet<String>());
    }
    else if(!videoNames.contains(video)){
        System.out.println("Video is not a part of lookup");
    }

    System.out.println("Enter keywords for video");
    String keyword =br.readLine();

    if(!keywordLength.containsKey(video))
        keywordLength.put(video, 0);

    if((keywordLength.get(video)+keyword.length())<500){
        videoKeyword.get(video).add(keyword);
        previousVal=keywordLength.get(video);
        keywordLength.put(video, previousVal+keyword.length());
    }
    else{
        System.out.println("Maximum length exceeded for video "+ video);
    }
    if(!kewordVideo.containsKey(keyword)){
        kewordVideo.put(keyword,new HashSet<String>());
    }
    kewordVideo.get(keyword).add(video);
 }

 void search(String searchKey){
    for (Entry<String, HashSet<String>> entry : videoKeyword.entrySet()) {
        for (String s : entry.getValue()) {
            if (s.startsWith(searchKey)) {
                System.out.println(searchKey+" is mapped to "+entry.getKey());
                break;
            }
        }
     }
 }

I have written junit tests

 public class MyUnitTest extends CultureMachineAssignment {
      CultureMachineAssignment testObj =new CultureMachineAssignment();
      testObj.insertDataIntoSet();
      testObj.addkeywords("video1");

     @Test
     public void testVideo() {
        assertEquals("video1", testObj.search("abcd"));
    }
}

I am getting following errors

The method assertEquals(Object, Object) in the type Assert is not applicable for the arguments (String, void)

  • Syntax error on token ""video1"", delete this token
  • Syntax error on token(s), misplaced construct(s)

I am not sure if this is the correct way to write junit test cases for functions with void return type and which prints output to console. Can someone please tell me correct code ?

Aucun commentaire:

Enregistrer un commentaire