TIL

항해99_TIL220602 (테스트 코드)

Hyeongjun_Ham 2022. 6. 2. 21:29

오늘 처음으로 테스트 코드 작성해봤다.

미숙하긴한데 잘 쓰면 진짜 좋은 도구가 될 것 같다.

그리고 디버깅도 어떻게하는건지 슬쩍 엿봐서 앞으로 코딩에 도움될 것 같다.

 

- 테스트코드

왜 작성해야 할까?

  1. 기능이 정상적으로 동작하는지 확인할 수 있습니다.
  2. 결함을 사전에 발견할 수 있습니다.
  3. Refactoring에 대한 자신감
  4. 문서로서 작용할 수 있습니다.
  1. 단위 테스트 (Unit Test)

- 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생시 정확하게 어느 부분이 잘못되었는지를 빨리 확인할 수 있게 해준다. 

 

  • 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트 가능
  • 모듈 간에 상호 작용 검증 못함

 

  1. 통합 테스트 (Integration Test)

 

  • 두 개 이상의 모듈이 연결된 상태를 테스트
  • 모듈 간의 연결에서 발생하는 에러 검증 가능

 

  1. E2E 테스트 (End to End Test)
    • 실제 사용자의 실행 환경과 거의 동일한 환경에서 테스트 진행 (=블랙박스 테스팅)
    • 블랙박스 테스팅 장점
        • 누구나 테스트 가능 - 개발자부터 디자이너, 베타 테스터 혹은 사장님까지!
    • 단점
      • 기능이 증가될 수록 테스트의 범위가 증가
      • 시간이 갈 수 록 테스트하는 사람이 계속 늘어나야함
      • 테스트 하는 사람에 따라 테스트 퀄러티가 다를 수 있음 → QA 직군이 있는 이유

- 어노테이션

@Test

  • @Test가 선언된 메서드는 테스트를 수행하는 메소드가 된다.
  • jUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 @Test마다 객체를 생성한다.

 

@Ignore

  • @Ignore가 선언된 메서드는 테스트를 실행하지 않게 한다.

 

@Before

  • @Before가 선언된 메서드는 @Test 메서드가 실행되기 전에 반드시 실행되어진다.
  • @Test메서드에서 공통으로 사용하는 코드를 @Before 메서드에 선언하여 사용하면 된다.

 

@After

  • @After가 선언된 메서드는 @Test 메소드가 실행된 후 실행된다.

 

@BeforeClass

  • @BeforeClass 어노테이션은 @Test 메소드보다 먼저 한번만 수행되어야 할 경우에 사용하면 된다.

 

@AfterClass

  • @AfterClass 어노테이션은 @Test 메소드 보다 나중에 한번만 수행되어야 할 경우에 사용하면 된다.

@Mock

  • 가짜 객체(Mock object)를 생성 
  • @ExtendWith(MockitoExtension.class) 어노테이션을 테스트 클래스에 붙여 사용할 수 있다.
  • DB구성이 안되어 있고, Service 메소드를 테스트 하고 싶은 상황에 사용할 수 있다.

 

통합테스트와 E2E테스트는 아직 시도하기에는 이른 것같고 단위테스트만이라도 익숙해져봐야겠다.

 

출처 : https://shlee0882.tistory.com/202

 

jUnit 개념, 특징, 어노테이션, 메서드

1. jUnit이란? - Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다. 2. 단위테스트(Unit Test)란? - 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다. - 모든

shlee0882.tistory.com