디버깅을 위해서 IDE에서 Run을 누르고, 입력을 반복하면서 버그가 발생하는 부분을 찾은 경험이 모두 있을 것이다.
제품을 배포하기 전에 이런식으로라도 버그를 찾아서 최대한 많이 해결을 해야하는데 이걸 테스트라고 한다. 런칭 되기 전 게임에서 베타 테스터를 구해서 며칠동안 플레이를 시키고, 버그를 찾는것도 디버깅이다.
Spring환경에서는 Test를 쉽게 할 수 있게 Test Code를 잘 작성할 수 있게 도와주는데, 사실 Spring은 아니고 JUnit이라는 것으로 자바 프로그래밍 언어 용 단위 테스트 프레임워크다.
내가 만든 클래스에서 cmd+shift+t를 이용해서 Test 코드를 바로 생성 할 수 있다.
생성된 Test Code를 보면 형태가 일반 자바와 다른데, 보통 main()메서드가 시작과 끝을 담당한다고 알고있다. 하지만 JUnit은 별도의 테스트 실행 환경을 가지고 있기 때문에 main 메소드가 필요 없고, 서버도 필요없다.
다음 코드가 Test Code중 기능 테스트 한 개이다.
@Test //이게 테스트 어노테이션임
@DisplayName("더하기 테스트")
void test1() {
Calculator calculator = new Calculator();
Double result = calculator.operate(8, "+", 2);
System.out.println("result = " + result);
Assertions.assertEquals(10, result); // Assertions.assertEquals(내 예상 값 , 진짜 결과 값 )
}
@Test로 되어있는 테스트 어노테이션을 이용해 테스트 대상임을 알리고, 일반 메소드 실행하듯 실행한다.
이때 내부에서 해야하는 건 내가 만든 객체와 내부 메소드를 작동한다. 이후 가장 중요한 Assertions.assertEquals(예측, 결과);를 통해 테스트 통과 여부를 판단하는데, 위 코드에서 보면 8+2는 10이 될 것 이라 생각해서 앞 매개변수에 10, 실제 메소드 결과를 저장한 result를 이용해서 비교를 한다. 둘이 일치하면 테스트 통과, 불일치시 실패이다.