TIL-20171105

2017.11.04(토) ~ 2017.11.05(일) 오늘의 T.I.L.

  • 학원 휴무 시작.

    • 많이 걸었다. 만 팔천 보, 거의 이만보 가까이 걸었다. 대치동 일대, 선정릉 등등…..
    • 저녁에 많이 좋아하는 누나들 만나서 조금 과음했다.
  • MVC 프레임워크 3단계 구현.

    • 거의 다 한 것 같은 느낌. ControllerScanner와 AnnotationHandlerMapping을 구현했고, Legacy Controller 하나를 Annotation-based Controller로 바꿔 봤다.
    • ControllerScanner와 AnnotationHandlerMapping에 싱글톤을 적용해야 할 것 같다.
    • 시스템 전반에 Singleton이 적용되어야 할 것 같은데 Dependency Injection을 어떻게 짤지 고민이 필요하다.
  • Servlet을 Unit test하는 방법에 대해 고민함.

    • HttpServletRequest를 인자로 받는 Servlet의 동작을 어떻게 유닛 테스트할지 고민해봤다.
    • 처음에는 너무나 단순하게도 HttpServletRequest를 implement하는 FakeHttpServletRequest와 같은 구현체를 만들까 생각했지만 좋지 못한 방법이라고 느껴졌다. 하단 코드 참조.

FakeHttpServletRequest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
abstract class FakeHttpServletRequest implements HttpServletRequest {
@Override
public String getRequestURI(){
return "/test";
}
@Override
public String getMethod(){
return "get";
}
}

//TEST 코드 내에서의 사용.....

public void test(){
assertEquals(controller, RequestMapper.getController(new FakeHttpServletRequest() {
@Override
public String getAuthType(){

return null;
}

@Override

@Override

.......
}))
}

코드가 엉망진창이다. 우리는 getRequestURI()와 getMethod()에 대한 Fake Result만 받아오면 유닛 테스트를 수행할 수 있는데, 이런 보일러플레이트가 테스트 코드 안에 존재하는 건 낭비다.

그래서….

  • Mockito와 JMockit에 대해 공부함.

    • 작동 원리는 비슷, Syntax에서 약간 차이가 있는듯.
    • mock() 메소드로 인터페이스에 대한 Mocking 구현체를 만들어 놓고 fake값을 리턴해주도록 설정하면 된다.
    • 근데 이유는 모르겠지만 Mockito가 내 프로젝트에 적용이 안 되는 바람에 아직 실전 배치를 못 하고 있다. ㅋㅋㅋㅋ
    • 내일은 고칠 것이다.
  • Scala에 대해 유튜브로 공부하기 시작.

    • 오늘은 개발 환경 세팅과 간단한 println 까지만.
    • 금방 배울 것 같다. 자바와 여러모로 비슷.

오랜만에 주말에 푹 쉬었더니 컨디션이 아주 좋다. 좋은 사람들과 만남의 자리도 가지고….