2017-05-16 24 views
0

내 테스트 부분은 다음과 같다 :오류 : Jmockit/Junit와

public void runUserReport() { 
     try { 
      List<User> users = dbConn.getUsers(); 
      System.out.println(users.size()); 
      if (users.isEmpty()) { // empty database 
       System.out.println("No users in database..."); 
      } else if (users.size() <= 10) { // detailed reporting 
       System.out.println("Listing all usernames:"); 
       for (User user : users) { 
        System.out.println(user.getUsername()); 
       } 
      } else { // summary reporting 
       System.out.println("Total number of users: " + users.size()); 
       System.out.println(users.get(0).getUsername()); 
       System.out.println(users.get(1).getUsername()); 
       System.out.println(users.get(2).getUsername()); 
       System.out.println(users.get(3).getUsername()); 
       System.out.println(users.get(4).getUsername()); 
       System.out.println((users.size() - 5) + " more..."); 
      } 
     } catch (SQLException sqle) { 
      System.out.println("DBConnection problem at runUserReport()."); 
     } 
    } 

내 실험 : userAdmin라는 클래스에 속하는 시험

@Test 
     //testing user report method of UserAdmin - number of users less than 10 
     public void testuserReport_SizeLessThan10() throws Exception 
     { 
      new Expectations() {{ 
       dBConnection.getUsers(); 
       times=1; 
       result= Arrays.asList("Abc","123"); 
      }}; 

      System.out.println("in less than 10"); 
      userAdmin.runUserReport(); 
     } 

방법은 다음과 같다 사용자의 크기를 2로 지정하면 실행되지만 메소드에 정의 된대로 "모든 사용자 이름 나열 :"로 시작하는 사용자 이름이 인쇄되지 않습니다. 테스트의 기대 부분에서 결과를 잘못 정의합니까? 도와주세요

답변

1

System.out.println(users.size());은 크기가 2로 인쇄되고 테스트가 실패하지 않는지 확실하지 않습니다.

List<User> users = dbConn.getUsers();result= Arrays.asList("Abc","123");는 문자열, List<String> 목록으로 result을 만드는 동안 users이 사용자 유형의 목록을 것을 말한다. List<String>List<User>에 할당하고 어떻게 든 런타임에 실패하지 않습니다.

사용자 유형 목록을 준비하고 현재 수행중인 작업 대신 result에 할당해야합니다.