https://github.com/Quick/Quick/blob/master/Documentation/ko-kr/QuickExamplesAndGroups.md Quick/Quick The Swift (and Objective-C) testing framework. Contribute to Quick/Quick development by creating an account on GitHub. github.com 여기서 너무 잘 설명해서 덧붙일 것도 없는 듯 하네용... Quick 감사합니다👏 한글번역 감사합니다👏 개인적으로는 테스트 메소드 이름이 엄청 구체적이여야한다고 해서 하나씩 만들때 마다 너무 긴데 잘 읽히나...? 이런 생각도 들고 약간의 귀찮음도 있었는데 Quick을 사용하면 긴 테스트 메소드 이..
Unit test 라이브러리로 많이 쓰이는 Quick과 Nimble..! 왜 유명한 것인지 Nimble부터 살펴보자 ☺️ [1] XCTAssert 와는 달리 매번 사용자 임의 실패 메시지를 지정할 필요가 없다 XCTAssert에서 실패 메세지를 작성해주지 않으면, XCTAssertTrue(contains(sillyMonkeys, kiki)) 테스트가 실패했을 때 달랑 "XCTAssertTrue failed" 이라는 실패메세지를 받게 된다 그래서 보통 이렇게 실패 메시지를 함께 작성한다 XCTAssertTrue(contains(sillyMonkeys, kiki), "Expected sillyMonkeys to contain 'Kiki'") 테스트가 실패했을 때 "Expected sillyMonkeys to..
[1] debounce - 타이머를 지정해두고 타이머가 끝난 시점에 가장 최근의 값을 방출해준다. - 이벤트가 방출될때마다 타이머가 초기화된다. - 사용예제: 타이머를 2초로 지정해두면, 사용자가 버튼을 폭풍 누르다가 더이상 버튼을 안누르고 2초가 지날때 가장 마지막 클릭 이벤트를 준다. [2] throttle - 타이머를 지정해두고 이벤트가 처음 방출되면 타이머 동안 어떤 이벤트도 방출되지 않는다. - 이벤트가 방출될때마다 타이머가 초기화되지 않는다. - 사용예제: 타이머를 2초로 지정해두면, 사용자가 버튼을 폭풍 누를때 처음 클릭 이벤트만 주고 2초동안 어떠한 클릭이벤트도 주지 않는다. (다만 latest를 어떻게 설정해주냐에 따라 조금 다른데 밑에서 확인!_!) [2.1] throttle lates..
[1] 실패하는 테스트를 작성한다 10/2 = 5 인지 나눗셈 테스트 해보는 코드인데 당연히 실패한다. Calculator를 만들지도 않았기 때문에-! [2] 빨리 테스트가 통과하게끔 만든다. (또는 컴파일에러가 안나게 일단 막 만들 수 도 있는데 간단한 함수라 바로 구현함) [3] 이제 제대로 동작하는 지를 검사하겠다는 마인드를 지닌다. 다른 실패할 테스트를 만들어본다 (0으로 나눴을때) [4] 테스트가 통과하게끔 만든다 이런식으로 테스트 코드를 먼저 만들고 구현을 점진적으로 해나가는 것이 TDD의 느낌(?) 인 것 같다 그리고 테스트주도개발 에서 나온 것 처럼 일단 빨리 테스트를 통과하게 만들고 그 와중에 생겨난 중복제거 등 리팩토링을 마지막 단계로 해줄 수 도 있다 기능구현을 하고 테스트 코드를 뒤..
[ TDD의 주문 ] TDD의 주문 = 빨강/초록/리팩토링 1. 빨강 - 실패하는 작은 테스트를 작성한다. 처음에는 컴파일조차 되지 않을 수 있다 2. 초록 - 빨리 테스트가 통과하게끔 만든다. 이를 위해 어떤 죄악을 저질러도 좋다 (죄악이란 기존 코드 복사해서 붙이기, 테스트만 간신히 통과할 수 있게끔 함수가 무조건 특정 상수를 반환하도록 구현하기 등을 의미한다) 3. 리팩토링 - 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다 [ 예제 ] 1. 정말 리얼 말그대로 테스트를 가장 먼저 작성한다 public void testMultiplication() { Dollar five = new Dollar(5); five.times(2); assertEquals(10, five.amount)..
테스트 코드부터 작성하는 것이 감이 안와서 테스트 코드보다 먼저 ArtistAPIService를 작성해버렸다... 🙄 이전 포스팅에서 만들었던 ArtistAPIType을 이용하여...!!! 물론 다음과 같이 Artist모델도 만들어줬다...!!! 그리고 Apple Music API 홈페이지에 들어가서 해당 API에 해당하는 더미데이터를 복붙하여 넣어준 더미데이터 파일을 만들고 테스트 코드 있는 쪽에 넣어준다 BananaMusicTests 그룹안에 넣어주면 된다 (나의 토이프로젝트 이름은 BananaMusic이기때문...ㅎㅎ!! ) 그리고 실제 서버에서 주는 데이터가 아니라 이 더미데이터를 파싱하는 ArtistAPIServiceStub 을 만든다 (Stub, Mock, Spy 등등 다양한 용어들이 있던데 ..
테스트 코드를 제대로 공부하고 싶어서 예제 프로젝트를 진행중이다 아직 유닛테스팅도 잘 작성하지 못하지만 TDD 어떤지 너무 궁금해서 해보기로 했다 :-) 띄엄띄엄 조금조금 공부중인데 흐름을 놓치지 않도록 잘 정리해서 기록해두자 주제는 Apple Music API를 이용한 토이 프로젝트...!!! Apple Music API는 이렇게 모든 API마다 response json을 친절하게 알려주는데, 이 json을 dummy data로 쓰기에 딱 좋기 때문이다 일단 Apple Music API를 사용하기 위해서는 developer token이 필요하다 이 순서대로 차근차근 해서 keyID, teamID 를 알아내고 나의 private key가 담긴 .p8 file을 얻어내야한다 https://developer..
Signal와 Driver는 UI 계의 PublishSubject / BehaviorSubject 같은 것...! Signal과 Driver 의 공통점 - error를 return 하지 않는다. - 메인 쓰레드에서의 작동을 보장한다. - Rxcocoa에 있음 Signal과 Driver 의 차이점 - Signal은 새로운 구독자에게 replay 해주지 않는다. (Driver 처럼 구독하는 순간 초기값이나 최신값을 주지 않는다. 구독한 이후에 발행되는 값을 받음. 위의 사진 참고) - Signal은 emit함수로 이벤트 처리 / Driver는 drive함수로 이벤트 처리 signal.emit(onNext: { (element) in } driver.drive(onNext: { (element) in } Rx..
https://medium.com/gett-engineering/rxswift-share-ing-is-caring-341557714a2d RxSwift: share()-ing is Caring - Gett Engineering - Medium RxSwift resource sharing can be hard. Learn about share(), which lets you define streams that share resources among their subscribers. medium.com 설명이 너무 감동적..🥺 share란 publish와 같은 컨셉인데, 옵져버블 공유를 위한 연산자이다 하지만 publish와 다르게 connect가 필요없다...! (👍) 그리고 publish는 옵져버블이 끝..
모바일 개발자를 위한 머신러닝 https://firebase.google.com/products/ml-kit/?authuser=0 Firebase ML Kit를 사용하면 숙련된 머신러닝 개발자든 이제 막 시작한 초보자든 관계없이 강력한 머신러닝 기능을 Android용 또는 iOS용 앱에 도입할 수 있습니다. firebase.google.com ML Kit는 기기별 API 와 Cloud API가 있다. 기기별 API는 데이터를 빠르게 처리하고, 네트워크 연결 없이 작동하며, 클라우드 기반 API는 Google Cloud Platform의 강력한 머신러닝 기술을 활용하여 보다 높은 정확도를 제공한다고 한다..! 그리고 커스텀 모델도 사용할 수 있다...!!! >__
- Total
- Today
- Yesterday
- ribs
- 플러터 얼럿
- 플러터 싱글톤
- cocoapod
- SerializerMethodField
- Flutter 로딩
- flutter 앱 출시
- ipad multitasking
- 구글 Geocoding API
- Django FCM
- Flutter Text Gradient
- Watch App for iOS App vs Watch App
- Sketch 누끼
- METAL
- Dart Factory
- Flutter Clipboard
- drf custom error
- flutter deep link
- Python Type Hint
- Django Firebase Cloud Messaging
- Django Heroku Scheduler
- DRF APIException
- Flutter Spacer
- github actions
- flutter build mode
- PencilKit
- flutter dynamic link
- 장고 URL querystring
- 장고 Custom Management Command
- Flutter getter setter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |