목록테스트 (4)
윤개발
TDD 책을 읽으며 작성한 내용입니다. Test Driven Development: By Example - 저자: 캔트백 테스트 주도 개발의 궁극적인 목표는 "작동하는 깔끔한 코드" 이다. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 중복을 제거한다. TDD의 주문 빨강 - 실패하는 작은 테스트를 작성한다. (컴파일 조차 되지 않을 수 있다) 초록 - 빨리 테스트가 통과하게끔 만든다. (이를 위해 어떤 죄악을 저질러도 된다) 리팩토링 - 통과하게만 하는 와중에 생겨난 중복을 제거한다. 일반적인 TDD의 주기 테스트를 작성한다. 어떤식으로 나타나길 원하는지 이야기를 써내려나간다. 올바른 답을 얻기 위해 필요한 이야기의 모든 요소를 포함시켜라. 실행 가능하게 만든다. 무엇보다 중요한 것은..

자동화된 테스트를 작성할 경우에 테스트들이 의존성을 가지고 같이 실행되어야 하는 경우가 많이 있는데요. 예를 들어 사용자를 조회하는 로직을 테스트한다고 한다면 UserService에서 UserRepository, 그리고 DB까지 연결되어있습니다. UserService만 테스트하고 싶어도 이어지는 연결로 인해 독립적인 테스트가 힘들어집니다. 또한 아직 UserRepository가 구현되지 않은 경우에도 테스트가 힘들어지죠. 이런 경우에 주로 실제 객체가 아닌 단순한 객체를 이용하여 테스트하게 되는데 이를 테스트 더블이라고 합니다. 용어 자체는 제라드 메스자로스(Gerard Meszaros)가 만든 용어로, 스턴트 더블(영화 촬영에서 말하는 스턴트 대역 배우)에서 아이디어를 얻어서 만든 용어입니다. 테스트 ..

AssertJ란? Assertj는 많은 Assertion, 오류 메시지 테스트를 제공하고 테스트 코드 가독성을 향상 시키며 쉽게 사용할 수 있도록 설계된 Java 라이브러리입니다. 의존성 추가 Assertj를 사용하기 위해선 의존성을 추가해주어야 합니다. maven dependency org.assertj assertj-core 3.20.2 test (자바 7 은 2.9.1을 사용하라고 명시되어있습니다.) gradle dependency 추가 testImplementation "org.assertj:assertj-core:3.20.2" 항상 Java 버전을 확인하고 사용해주세요! AssertJ Core 3.x requires Java 8 or higher AssertJ Core 2.x requires J..

해당 포스팅은 JUnit에서 자주 사용하는 가장 기본적인 어노테이션과 기본 테스트를 확인할 수 있습니다. JUnit 이란? 대부분의 언어는 단위 테스트를 지원하며 이를 xUnit이라고 합니다. 즉 JUnit은 java의 단위테스팅 프레임워크라고 생각하면 됩니다. JUnit은 테스트를 단순하게 System.out.print를 찍어서 확인하는 것이 아닌 메소드의 값과 결과가 동일한지, 해당 메소드가 기대한 동작을 하는지, 예외상황에서는 예외를 정확하게 반환하는지 등에 대한 테스트를 지원합니다. @(어노테이션)을 이용해서 손쉽게 만들 수 있고 AssertEquals등을 활용해 코드로써 테스트가 가능합니다. 지원되는 버전 어떤 프레임워크 또는 의존성을 사용하기 위해서는 항상 버전을 확인해야합니다. JUnit 5..