Testing Codes/Test 기본

테스트의 Assert의 종류 우리는 테스트를 진행할 때, 단언(Assert)을 통해 기대값과 실제 값을 비교한다. 단언의 기대값과 실제 값이 다르다면 테스트는 실패할 것이고, 같다면 성공한다. 이러한 단언은 단순하게는 객체의 함수를 호출하고 결과값을 받아 해당 값을 비교하는 것부터 시작해, 객체와의 상호 작용을 확인하는 단언들 또한 존재한다. 이번 글에서는 단언에 어떤 종류가 있는지를 알아봄으로써 각 테스트 상황에 맞는 단언을 사용할 수 있도록 한다. 함수의 결과를 확인하는 단언 우리가 다룰 첫 단언은 함수의 결과를 확인하는 단언이다. 함수의 결과를 확인하는 단언은 가장 간단한 단언으로, 입력값과 출력 값이 같아야 하기 때문에 인터페이스의 구현체가 달라지더라도 테스트는 변경될 필요가 없다. 예를 들어 다..
Test Doubles란 무엇인가? 테스트 대상 객체가 다른 객체와 의존성이 있는 경우를 생각해보자. 만약 객체를 테스트 하기 위해 의존성이 있는 객체에 대한 실제 구현체를 사용한다면, 의존성이 있는 객체의 구현체에 의해 테스트가 실패할 수 있다. 이런 경우 실제 구현체 대신 해당 객체의 동작을 모방하는 객체를 만들어 테스트에 영향이 없도록 만들어야 한다. 이 때 의존성 있는 객체의 동작을 모방하는 객체를 바로 Test Doubles라 부른다. Test Doubles를 사용하기 위한 환경 설정 Test Doubles를 사용하기 위해 다른 객체에 의존성이 있는 UserProfileFetcher 객체를 만들어보자. UserProfileFetcher은 UserRepository 객체로부터 유저의 이름(name..
유닛 테스팅이 무엇인지 이해하기 위해서는 유닛이 무엇인지부터 알아야 한다. 유닛이란 무엇인가? 유닛 테스팅의 유닛이란 독립적인(isolated) 기능을 저장하는 컨테이너로, 독립적인 기능을 담는 함수나 클래스 혹은 모듈 모두가 유닛이 될 수 있다. 하지만, 객체 지향 프로그래밍(Object Oriented Programming)에서 유닛은 조금 더 명확한 의미를 가진다. 객체 지향 프로그래밍에서 기능에 대한 책임은 객체에 있으며, 따라서 일반적으로 기능을 담는 객체가 유닛이 된다. 기능을 담는 객체가 유닛이 된다는 것은 기능을 담지 않는 객체는 유닛이 되지 않는다는 뜻이며, Kotlin에서의 data class 나 Java의 POJO 등은 유닛이 되지 못한다. 유닛이 무엇인지 알았으면, 이제 유닛 테스팅..
Dev.Cho
'Testing Codes/Test 기본' 카테고리의 글 목록