본문 바로가기

IT/개발

spring junit test

 

service단에서 @value annotaion으로 properties파일에 설정되어있는 값을
불러와서 사용하는 경우가 있다.

아래와 같이 service를 하나 만들고

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Service
public class StudentService{
// 이런식으로 불러와서 값을 셋팅
   @Value("${host.url}")
   private String host; 
 
   private StudentRepository studentRepository;
 
   public StudentService(StudentRepository studentRepository){
        this.studentRepository = studentRepository;
   }  
 
// 아래와같은 메소드가 있을때 
   public String studentTest(){ 
       String path = "/test/update"
       String url  = host.concat(path);
 
      Student student = studentRepository.findByUrl(url);
//생략
   }
 
}
cs

 

아래와 같이 service에 대한 test를 만들어본다.(첫번째라인의 어노테이션은 반드시 입력해주도록!)
분명 실행하면 NPE(null point exception)이 발생한다.
이유는 service의 16번째라인에서 concat메소드를 실행하면서 host의 값이 null이기 때문이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RunWith(MockitoJUnitRunner.class)
public class StudentServiceTest{
   @Mock
   StudentRepository studentRepository;
 
   @InjectMock
   StudentService studentService;
 
   @Test
   public void method_test(){
    
        when(studentRepository.findByUrl(anyString())).thenReturn(Student.builder().id(1L).build());
        studentService.studentTest();
 
   }
 
}
cs

 

그렇다면 위와같이 테스트를 실행하면서 오류를 안나게 하려면?
host의 값을 주입시켜줘야 되는데
아래의 setUp()메소드에서 처럼 값을 주입시켜준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@RunWith(MockitoJUnitRunner.class)
public class StudentServiceTest{
   @Mock
   StudentRepository studentRepository;
 
   @InjectMock
   StudentService studentService;
 
   @Before
   public void setUp() {
      ReflectionTestUtils.setField(studentService, "host""http:://localhost:8085");
   }
 
   @Test
   public void method_test(){
        when(studentRepository.findByUrl(anyString())).thenReturn(Student.builder().id(1L).build());
        studentService.studentTest();
 
   }
 
}
cs

 

 

'IT > 개발' 카테고리의 다른 글

spring 파일 업로드  (0) 2020.10.27
no suitable constructor found for type 에러 분석  (0) 2020.10.26
JAVA 상대경로  (0) 2019.12.02
JAVA 입력과 출력 stream  (0) 2019.10.19
Spring ibatis resultMap 쿼리 2개실행  (0) 2019.10.16