본문 바로가기

[스몰토크] Swift Stubbing 통합테스트 단위테스트는 알고리즘을 검증하는 테스트입니다. 통합테스트를 하기 위해 어떤 것들이 필요한 지 알아봅시다. 통합테스트 우리는 객체간 메시지 통신을 어떻게 확인할 수 있을까요...? 객체간 메시지 전달은 런타임에서 일어나기 때문에 런타임에서만 확인할 수 있습니다. 어떻게? 자바에서는 Mockito 라는 강력한 Testing 도구가 있습니다. Mockito 에 대한 자세한 설명은 생략합니다. 한글로 자세한 설명은 여기를 확인해주세요. 객체통신망에서 테스트 객체에서 메시지를 보낸 뒤 이웃의 Mock 객체들이 메시지를 수신하였는지 확인합니다. // interface 뿐 아니라 구체 클래스도 mock으로 만들 수 있다. LinkedList mockedList = mock(LinkedList.class); // st.. 더보기
[스몰토크] Clean Architecture? Clean Swift (VIP)? Clean Architecture "소프트웨어를 계층으로 나눔으로써 관심사를 분리한다" 라는 아이디어를 기반으로 로버트 C. 마틴 선배님의 The Clean Architecture 의 포스팅이 있습니다. 2년전... 저는 Android 를 개발하면서 Clean Architecture 를 처음 접했으며 여기에서 많은 영향을 받았습니다. 아래 그림은 Clean Architecture 를 도식화한 그림입니다. 여러 Layer 로 나누어져있으며 각각의 역할을 담당하고 있다라는 수준으로만 이해하였습니다. 현재 마틴 파울러 저 엔터프라이즈 애플리에키션 아키텍처 패턴을 읽으며 첫장부터 Layering 에 대한 이야기가 나옵니다. Layering 계층화 (layering) 은 복잡한 소프트웨어 시스템을 분할하는데 사용.. 더보기
[스몰토크] TDD? 테스트코드? TDD? 켄트백 曰: 사람은 한 번에 두 가지 일을 하는 것은 어렵다. 한 번에 한 가지만 집중해야만 한다. Red 1단계 : “문제를 정의하는 것에 집중한다.” Green 2단계 : “그 문제를 해결하는데 집중한다.” Blue 3단계 : “작성한 코드를 Clean Up하는 것에 집중한다.” 이 3단계 주기가 빈번하게 전환되어야 한다고 합니다. 위에 Red, Green, Blue cycle 에서 Red 단계에서 Failing test 를 작성하는 시기가 가장 중요하다고 생각합니다 그 이유는 요구사항이 무엇인지 다시한번 생각해보고 방향을 틀수있는 마지막 기회이기 때문입니다. TDD 장단점 TDD 에 대해서 간단히 맛을 보기 위해선 백명석님 클린 코드 강의 중 TDD편을 보시는 것을 추천드립니다. (로버트 .. 더보기
[스몰토크] WKWebView 와 통신 어떤것이 적절할까? Scheme VS Bridge WkWebView 와 통신하기 위한 2가지 방법이 있습니다. 아래는 Scheme, Bridge 두 방식에 대해 세미나를 진행한 것을 캡쳐한 그림입니다. Scheme, Bridge 방식의 샘플이 있습니다. by 클린트님 정적과 동적 Scheme는 정적 / Bridge는 동적입니다. 대칭적인 예를 들어서 컴파일 타임 VS 런타임과 매칭되어서 설명할 수 있습니다. 정적 동적 유연성 낮음 높음 불변조건 높음 낮음 불변조건(invariant) 컴타임 타임에서 빌드가 성공했다면 그 이후 조건은 "프로그램이 실행될 준비가 완료되었다"를 의미합니다. 하지만 프로그램이 실행되면 빌드를 다시하거나 유연하게 프로그램의 변경을 할 수 없습니다. 유연성은 없지만 invariant 조건이 충족되는 장점을 가질 수 있습니다. 런타.. 더보기
아신의 Xcode Extension 소개! (2/2) XAlign, XcodeWay, Xcsort 이 포스팅은 "아신의 Xcode Extension 소개!"의 Series 중 일부입니다. 1. 아신의 Xcode Extension 소개! (1/2) Swiftify, Protocol Extension, Swimat 2. 아신의 Xcode Extension 소개! (2/2) XAlign, XcodeWay, Xcsort XAlign XAlign 은 코드를 정렬하는 강력한 확장 프로그램입니다. Installation Github Release -> Download XAlign.zip -> execute 이전 포스트에서는 App 을 다운받은 후 어떻게 설정하는지 Swimat 에서 설명했습니다. Swiftify와 마찬가지로 확장프로그램을 체크해주세요. Usage 단축키 설정해두시는 것을 추천드립니다. XcodeW.. 더보기
아신의 Xcode Extension 소개! (1/2) Swiftify, Protocol Extension, Swimat 이 포스팅은 "아신의 Xcode Extension 소개!"의 Series 중 일부입니다. 1. 아신의 Xcode Extension 소개! (1/2) Swiftify, Protocol Extension, Swimat 2. 아신의 Xcode Extension 소개! (2/2) XAlign, XcodeWay, Xcsort Swiftify ObjcC -> Swift 로 변환해주는 확장 프로그램입니다. ObjcC 문법을 잘 모르시는 분들이라면 도움이 많이 될 것 같아요! Installation 설치는 여기요! Xcode 실행 -> Xcode Extensions -> install Swiftify for Xcode Preferences 아래 과정을 진행한 후 Xcode 재부팅이 필요합니다. Usage Swift로 .. 더보기
0원으로 현업 환경을 설정해보자! Github Pull Request(코드리뷰) 이 포스팅은 "실제 현업의 환경을 설정해보자!"의 Series 중 일부입니다. 1. 0원으로 현업 환경을 설정해보자! Git 2 0원으로 현업환경을 설정해보자! Sourcetree 3. 0원으로 현업환경을 설정해보자! Beyond Compare 4. 0원으로 현업환경을 설정해보자! Git Flow(Sourcetree) 5. 0원으로 현업 환경을 설정해보자! Github Pull Request(코드 리뷰) 6. 0원으로 현업환경을 설정해보자! [번외편] 히스토리 꾸미기 들어가기 앞서 구글 코드리뷰 가이드 한글은 여기를 참조해주세요. 구글 코드리뷰 가이드를 한글로 번역해주신 Soojin Ro 님께 감사드립니다. 리뷰어 (Reviewer): 코드를 검토하는 대상자입니다. 리뷰이(Reviewee): 검토 대상.. 더보기
0원으로 현업 환경을 설정해보자! Git Flow(Sourcetree) 이 포스트는 Sourcetree 를 기준으로 설명하고 있습니다. 이 포스팅은 "실제 현업의 환경을 설정해보자!"의 Series 중 일부입니다. 1. 0원으로 현업 환경을 설정해보자! Git 2 0원으로 현업환경을 설정해보자! Sourcetree 3. 0원으로 현업환경을 설정해보자! Beyond Compare 4. 0원으로 현업환경을 설정해보자! Git Flow(Sourcetree) 5. 0원으로 현업 환경을 설정해보자! Github Pull Request(코드 리뷰) 6. 0원으로 현업환경을 설정해보자! [번외편] 히스토리 꾸미기 Git Flow? 전체 소스는 여기에서 확인할 수 있습니다. 우아한 형제들에서 git flow 포스트를 참고하시면 도움이 됩니다. 위에 그림이 어떻게 흘러가는지 한번 파헤쳐보.. 더보기