본문 바로가기
반응형

TDD10

검증부 (assert / expect)는 하드코딩한다 최근 코드리뷰를 하다가 자주 지적하던 내용이 있어, 정리하게 되었다. 요즘 팀 분들이 가장 많이 하는 실수가 바로 검증부에 도메인 로직이 추가되는 것이다. 이를테면 다음과 같은 구현 클래스가 있다고 해보자. export class FilePath { private readonly _path1: string; private readonly _path2: string; private readonly _path3: string; private readonly _path4: string; constructor(path1: string, path2: string, path3: string, path4: string) { this._path1 = path1; this._path2 = path2; this._path.. 2021. 11. 15.
테스트 코드에서 내부 구현 검증 피하기 테스트 코드를 작성하고 운영하다보면 기존 코드가 조금만 변경되어도 테스트를 다 고쳐야하는 경우가 종종 있다. (모든 경우가 그렇진 않겠지만) 기능의 최종 결과를 검증하는게 아니라 내부 구현을 검증하는 경우에 자주 이런일이 있었다. 내부 구현을 검증하는 테스트들은 구현을 조금만 변경해도 테스트가 깨질 가능성이 커진다. 내부 구현은 언제든지 바뀔 수 있기 때문에 테스트 코드는 내부 구현 보다 최종 결과를 검증해야한다. 그럼, 내부 구현을 검증하는 경우란 어떤 것인지 알아보자. 1. 상세 구현부를 다 검증하는 경우 이를 테면 다음과 같이 합계 금액을 구하는 클래스가 있다고 하자. export class OrderAmountSum { minusSum: number = 0; plusSum: number = 0; .. 2021. 11. 11.
테스트 픽스처 올바르게 사용하기 xUnit에서는 테스트 대상 시스템 (System Under Test, 이하 SUT) 를 실행하기 위해 해줘야 하는 모든 것을 테스트 픽스처라고 부른다. 처음 테스트 코드를 배우게 되면 이 테스트 픽스처 부분에 대해서 완전히 오해하는 경우를 자주 본다. 최근에 팀에 단위 테스트를 전파하고 코드리뷰를 진행하는 과정에서 다들 비슷한 오해를 하고 있는걸 발견하고 작성하게 되었다. 모든 코드는 TypeScript와 Jest로 작성되었다 1. beforeEach (setup) 등 사용할 경우 아래 코드를 보면 공통된 테스트 픽스쳐를 beforeEach 로 처리하였다 describe('Order1', () => { let sut: Order; beforeEach(() => { sut = Order.create(10.. 2021. 10. 30.
자바 공화국 오늘 교보에서 주문한 단위 테스트 책을 받았다. Xunit 테스트 패턴 책 (번역이 별로다 ㅠ) 이후에 테스트와 관련해서는 되게 오랫만에 본 재밌는 책이여서 이건 우리팀 위키에 정리해서 공유해야겠다는 생각이 들었다. 이 생각으로 최근의 채용 과정을 떠오르게되니 조금 우울해졌다. 과제형 프로젝트를 채용 과제로 삼으면서 많은 분들의 프로젝트 결과물도 보고, 관련해서 면접도 본다. 면접에서 과제에 대한 코드리뷰를 하다보면 지원자분들이 항상 물어보는게 있다. "피드백 주신 그걸 좀 더 깊게 배우려면 어떤 책이나 영상을 보면 되나요?" 이 질문을 항상 받는데, 대답해주기가 애매하다. 왜냐면 우리나라의 대부분의 좋은 개발 컨텐츠가 Java를 기반으로 나왔기 때문이다. (우리 회사는 NodeJS이고, 지원자분 역시 .. 2021. 10. 24.
@SpyBean @MockBean 의도적으로 사용하지 않기 보통 스프링 부트 관련 테스트 코드를 작성할때 @MockBean과 @SpyBean 를 사용했습니다. (참고: SpringBoot @MockBean, @SpyBean 소개) 복잡한 스프링 프로젝트에서도 원하는 코드만 아주 간단하게 Mock 처리를 할 수가 있어 정말 많이 사용했습니다. 그러다 최근에 Spring Boot Cloud 프로젝트의 테스트 코드를 보면서 제가 완전히 잘못하고 있음을 깨달았는데요. 대부분의 테스트 코드가 @MockBean, @SpyBean없이 작성되있었습니다. 마침 정진욱님의 발표도 봤던지라, 저도 @MockBean과 @SpyBean없이 테스트 코드 작성을 시도해보니!완전 큰 깨달음을 얻었습니다. 샘플 예제로 한번 소개드리겠습니다. 예제 예를 들어서, AWS SQS로 메세지를 보내는.. 2018. 7. 21.
TDD 잘알못을 위한 돌직구 세미나 참석 후기 OKKY 최단시간 마감 세미나! TDD 잘알못을 위한 돌직구 세미나에 다녀왔습니다. 세미나 링크 발표순서는 변경되어서 박재성님이 먼저 진행하셨습니다. 가장 빨리 마감된만큼 참석을 원했지만 아쉽게 안되신 분들도 많을거라 생각합니다. 모든 내용을 다 담진 못했지만, 최대한 미참석자분들에게 공유될 수 있도록 작성했습니다. 이걸로 조금이나마 아쉬움을 달래셨으면 합니다. 그럼 발표 내용 시작하겠습니다! 1. 박재성 Naver -> 아키에이지 -> NHN Next 에서 활동 NEXT 종료 후 뭘할지 고민하다가 교육으로 가게 됨 NextStep으로 1인 교육 사업 자바지기 -> SLIPP 커뮤니티 운영 이 발표에서는 TDD와 리팩토링을 왜 해야하는지 알고 있다는 가정하에 진행 개발 현장을 떠난지 6년이 되어가고 있음.. 2018. 6. 22.

728x90