2012-08-29 5 views
0

junit 테스트 케이스를 사용하여 급여를 기준으로 직원 오브젝트를 정렬하려고합니다.junit 테스트 케이스의 널 포인터 예외 표시

은 로그가

package day4; 

import static org.junit.Assert.*; 
import day4.Employee; 

import org.junit.Test; 

public class TestEmployeeInfoWithSalary { 

@Test 
public void testGetSortBasedOnSalary() { 

Employee[] employee = new Employee[5]; 

employee[0].setName("pratap"); 
employee[1].setName("aruna"); 
employee[2].setName("satyam"); 
employee[3].setName("krishna"); 
employee[4].setName("siva"); 

employee[0].setId("k0100"); 
employee[1].setId("k0101"); 
employee[2].setId("k0102"); 
employee[3].setId("k0103"); 
employee[4].setId("k0104"); 
employee[0].setSalary(10000); 
employee[1].setSalary(1000); 
employee[2].setSalary(8000); 
employee[3].setSalary(6000); 
employee[4].setSalary(9000); 
EmployeesInfoWithSalary employeeInfoWithSalary= new EmployeesInfoWithSalary(employee, 5); 

employee[4].setName("pratap"); 
employee[0].setName("aruna"); 
employee[2].setName("satyam"); 
employee[1].setName("krishna"); 
employee[3].setName("siva"); 

employee[4].setId("k0100"); 
employee[0].setId("k0101"); 
employee[2].setId("k0102"); 
employee[1].setId("k0103"); 
employee[3].setId("k0104"); 
employee[4].setSalary(10000); 
employee[0].setSalary(1000); 
employee[2].setSalary(8000); 
employee[1].setSalary(6000); 
employee[3].setSalary(9000); 
assertArrayEquals(employee,employeeInfoWithSalary.getSortBasedOnSalary()); 

} 

} 

다음과 같이 JUnit 테스트 케이스

package day4; 

public class Employee { 

private String id; 
private String name; 
private int salary; 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public int getSalary() { 
    return salary; 
} 

public void setSalary(int salary) { 
    this.salary = salary; 
} 

} 

testemployee 급여 클래스는 다음과 같이

package day4; 
import day4.Employee; 
public class EmployeesInfoWithSalary { 
    private Employee[] employee; 
    private int numberOfEmployees; 
public EmployeesInfoWithSalary(Employee[] employee, int numberOfEmployees) { 
    super(); 
    this.employee = employee; 
    this.numberOfEmployees = numberOfEmployees; 
} 

public Employee[] getSortBasedOnSalary() { 

    String temp; 
    for (int iterator = 0; iterator < numberOfEmployees; iterator++) { 
     int minSalary = employee[iterator].getSalary(); 
     int index = iterator; 
     for (int comparator = iterator; comparator < numberOfEmployees; comparator++) { 
      if (employee[comparator].getSalary() < minSalary) { 
       index = comparator; 
       minSalary = employee[comparator].getSalary(); 
      } 

     } 

     employee[index].setSalary(employee[iterator].getSalary()); 
     employee[iterator].setSalary(minSalary); 
     temp = employee[index].getId(); 
     employee[index].setId(employee[iterator].getId()); 
     employee[iterator].setId(temp); 
     temp = employee[index].getName(); 
     employee[index].setName(employee[iterator].getName()); 
     employee[iterator].setName(temp); 

    } 

    return employee; 

} 

} 

직원 객체 클래스 내 직원의 정렬 클래스 그 null 포인트 표현을 오류를 보여주는 ..

어떤 몸도 도와 줄 수 있습니다 .. 감사합니다 ...

+1

스택 추적을 제공해 주시겠습니까? – Sal

+2

NullPointerException을 읽고 어디서 발생했는지 확인하고 디버거를 사용하여 코드를 디버깅하여 왜 이런 일이 발생했는지 확인하십시오. –

+0

실제 로그 plz 추가 – rooftop

답변

7

이것이 NPE의 줄로 추측됩니다.

// creates an array full of null values. 
Employee[] employee = new Employee[5]; 

employee[0].setName("pratap"); 

배열의 각 요소에 Employee 개체를 추가해야합니다.

더 나은 방법은 필요한 모든 필드를 사용하는 생성자를 사용하는 것입니다.

Employee[] employee = { 
    new Employee("pratap", "k0100", 10000), 
    new Employee("aruna", "k0101", 1000), 
    new Employee("satyam", "k0102", 8000), 
    new Employee("krishna","k0103", 6000), 
    new Employee("siva", "k0104", 9000) }; 
+0

이렇게하면 대답을 얻습니다 ...... Employee firstEmployee = new Employee(); \t firstEmployee.setName ("pratap"); \t firstEmployee.setSalary (10000); \t firstEmployee.setId ("k0100"); \t 직원 [0] = firstEmployee; \t firstEmployee.setSalary (1000); \t firstEmployee.setId ("k0101"); \t firstEmployee.setName ("aruna"); \t 직원 [1] = firstEmployee; – user533

+0

그 이유를 모르겠습니다. – user533

+0

'System.out.println (Arrays.toString (employee));'을 다양한 지점에서 인쇄하거나 디버거에서 코드를 단계별로 실행하십시오. 이렇게하면 무슨 일이 일어나는지 볼 수 있습니다. –

0

배열의 각 인덱스에 대한

Employee[] employee = new Employee[5]; 

후에는 Employee 개체를 초기화해야합니다.

employee[0] = new Employee(); etc