String Boot - Test Driven Development(TDD)

2020. 7. 17. 00:27개발공부/SpringBoot

"테스트 코드는 부실공사를 미연에 방지한다.
따라서 초기 작업에 필수적으로 들어가야한다."

끊임없는 삽질...
삽질은 언제쯤 잦아들까

강의대로 따라만 하는 것인데 안되는 것이 왜 이리도 많은지.
안되는 것을 해결하는 데 시간을 왜 이리도 길게 허비하는지.

삽질을 해도, 시간을 허비해도 삽은 퍼야하고 시간은 들어야한다.
이렇게라도 TIL(Today I Learned)를 실천하면 성장하는 날이 오지 않을까, 
늦어도.

1. Spring Boot 레스토랑 웹사이트 만들기 진행상황:

 1) Spring Boot Demo IntelliJ 환경에서 작업 중
 2) Test Code 구동 실습 중 
 3) WebController로 웹브라우저 조작

2. 배운 것: 

 1) TDD
  
- 테스트 코드는 작업 시작하기에 앞서 사용자 중심 개발, 객체 지향 인터페이스를 위한 필수적인 테스트 단계이다. 
  - 올바르게 작동하는지, 깔끔한 코드인지(det. Refactoring: 작동은 그대로 냅두고 내부 코드만 재구현) 확인할 수 있는 단계이다.
  1-1) 하면서 느낀 점
    
- Test 코드 필요하다.
   메서드 내 객체를 생성한다.
   객체에 필요한 생성자를 위한 class를 만든다.
   (위 과정에서 모든 코드를 손수 치지 않고 Alt + Enter 옵션 support를 최대한 활용한다.)
   Runtime test로 돌려본다.
   메서드로 호출한 매개변수가 없어서 발생하는 error, typo에 의한 error.
   기초 작업인 객체 생성, 생성자 생성, 메서드 호출 등을 사전에 진행함으로써
   앞으로 진행에 정확성과 효율성을 확립시켜준다.
   맞을 매를 미리 맞는다고 강사는 얘기했다. 
   그리고 그 매는 미리 맞을수록 물리적인 힘의 크기가 작다.

3. 잘 안됐던 부분: 

 1) IntelliJ Gradle
  - (이것 때문에 이틀동안 끙끙앓았다. 실상은 매우 허무했다.)
  - Gradle이란, Java 환경으로 구동하게끔 JVM(Java Virtual Machine)을 도와주는 plug-in 이다.
  - 프로젝트를 open하면 IntelliJ에서 Gradle을 자동으로 받을 수 있게 진행해준다.
  - WebController를 생성해서 웹브라우저에 Hello World를 출력하는 간단한 작업이었다.
  - 어떻게해도 출력이 안되고 서버 포트라던가 not found root project 오류가 떴었다.
  - 결론은 java 파일을 runtime java 파일이 있는 패키지 외부에 생성해서 실행시킬 수 없었다.
  - JRE configuration 설정은 Run tab에 들어가서 드롭다운으로 지정만 해주면 된다.
   · Port Number는 VM options에 -Dserver.port=[port number] 를 입력하면 된다.

 2) Test Driven Development(TDD) - assertThat method
- (겨우 패키지 외부 파일 생성 오류의 산을 넘었는데 이번엔 선언되지 않는 메서드 import가 있었다.)
- 1달 동안 Java를 배우면서 이런 경우는 없었다. 모든 import는 IDE(Integrated Development Environmnet)가 가지고 있었다.
- 하지만 이번엔 asserThat이란 method가 존재하지 않았다. 강의에선 나오는데 왜 내 Junit 화면엔 없냐고..
- 구글링이 아직 서툴러 한참을 찾은 끝에 Junit 버전이 업데이트 되면서 이전 import syntax에 변경이 생겼다고 했다.

//- assertThat & is의 import 구문
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;

 - 구글링은 개발자의 기본적인 덕목이다. 안되는 게 나왔으면 원인을 구글링을 통해 찾으려 노력하고 심리적으로 좌절하지 말자.