본문 바로가기
[Effective unit Testing] Chap3. 테스트 더블 [Effective unit Testing] Chap3. 테스트 더블 -스텁(stub)과 더미(dummy)가 등장한 가장 큰 이유는 제품 코드가 온전히 준비되기 전까지 사용할 대용품이 필요했기 때문이다.대용품이 있다면 주변 모듈을 다 갖추지 못했더라도 코드 일부만을 따로 컴파일하고 실행해볼 수 있었다. -오늘날에는 쓰임새가 훨씬 다양해졌다.종속 모듈 없이 컴파일하고 실행하려는 애초의 용도는 그 비중이 많이 줄었다.대신 테스트 추종 프로그래머에 의해 다양한 테스트 전용 장치가 만들어지면서 요즘은 테스트 대상 코드를 격리하고, 속도를 개선하고, 예측 불가능한 요소를 제어하고, 특수한 상황을 시뮬레이션하고, 감춰진 정보를 얻어내는 등의 용도로까지 쓰이고 있다.목적에 따라 비슷한 듯하면서도 다른 객체를 사용하는.. 2019. 2. 28.
[Effective Unit Testing] Chap2. 좋은 테스트란? [Effective Unit Testing] Chap2. 좋은 테스트란? -좋은 테스트의 고려 사항은 아래와 같다. 테스트 코드의 가독성과 유지보수성 프로젝트 안에서, 그리고 소스 파일 안에서 코드는 적절히 구조화되어 있는가? 테스트가 무엇을 검사하는가? 테스트는 안정적이고 반복 가능한가? 테스트가 테스트 더블을 잘 활용하는가? ... 2.1. 읽기 쉬운 코드가 유지보수도 쉽다.-자동화된 테스트는 결함을 효과적으로 막아주지만, 테스트 역시 코드인지라 가독성 문제에서 벗어날 수는 없다.읽기 어려운 코드는 검증하기도 어렵고, 결과적으로 테스트를 조금만 작성하는 사태로까지 이어진다.또 그렇게 작성된 테스트는 우리가 생각하는 좋은 테스트와는 거리가 멀다.제품의 구조와 API 가 테스트를 고려하지 않고 만들어졌다.. 2019. 2. 27.
[Effective Unit Testing] Chap1. 좋은 테스트의 약속 [Effective Unit Testing] Chap1. 좋은 테스트의 약속 -좋은 설계임을 증명하려거든 자동화된 테스트를 만들어보라! -테스트에 대한 인식 전환이 필요하다.테스트란 단순한 기능 검증 수단만이 아닌 요구사항을 명시한 문장이요, 모듈과 API 설계 수단이며, 사용설명서이자, 최고의 인수인계/유지보수 자료이기까지 하다.개발자의 설계역량 면에서 보면, 디자인 패턴에만 의지하기보다 테스트하기 쉬운 설계를 추구하는 쪽이 훨씬 탄탄한 기본기와 응용력을 길러줄 것이라고 감히 단언할 수 있다. 1.1. 더 좋은 테스트를 작성하기 위한 현황 점검-테스트 선행 방식에서는 자동화된 테스트를 단순한 오류 예방 목적으로뿐 아니라, 코딩 전에 그 코드에 기대하는 동작을 정의하는 설계 보조 수단으로까지 활용한다.구.. 2019. 2. 26.
[Gradle] compile(api) vs. implementation [Gradle] compile(api) vs. implementation -gradle 3.0 이 나오면서 compile 은 deprecated 되었고, implementation 또는 api 를 써야 한다. -api dependency는 consumer 에게 library 가 노출이 되어, consumer 의 classpath 에 포함이 된다.implementation 은 consumer 에게 노출되지 않아, compile classpath 에 들어가지 않는다. -implementation 의 장점은 아래와 같다. dependency 가 compile classpath 에 들어가지 않아서 transitive dependency 를 실수로 depend 하지 않는다.더 빠른 compile 이 가능하다.de.. 2019. 2. 6.
[android] Android unit and instrumentation tests tutorial [android] Android unit and instrumentation tests tutorial http://www.vogella.com/tutorials/AndroidTesting/article.html#what-to-test-on-android-applications 1. Introduction into Android testing 1.1. Testing Android applications -Android 의 unit testing 은 다음과 같이 두 가지로 나뉜다. Local unit tests : JVM 위에서 test 가 돈다.Instrumented unit test : Android System 을 요구하는 test -Local unit tests 는 Android device 에서 .. 2019. 2. 5.
[android] Espresso Tutorial [android] Espresso Tutorial http://www.vogella.com/tutorials/AndroidTestingEspresso/article.html 1. The Espresso test framework -Android testing framework 이며, UI test 를 쉽게 해준다.Google 이 2013년 10월에 첫 release 를 했고, 글 쓰는 시점에 2.0 이상이 release 되었으며 계속 유지보수 되고 있다. -Test 를 수행하기 전에 Activity 가 실행되었음을 보장한다. -single app test 가 주되지만, app 간의 테스트도 가능하다.너의 app 바깥쪽의 일을 테스트하는 것은 black box testing 만 가능하다. -Espresso.. 2019. 2. 4.
[android] gradle build 성능 향상시키기 [android] gradle build 성능 향상시키기 https://android.jlelse.eu/android-build-speed-up-ver-english-c76890aa610 -Gradle 보다 성능이 좋은 Bazel, Buck, Pants 등의 다른 build tool 들이 있다.그러나 그들은 initialize 하기가 너무 어렵다. -Gradle 을 최신 버전으로 유지하자. -minSdk 를 build.gradle 에 명시하자. packaging process 는 두 단계를 거친다.하나는 class to dex 이고, 다른 하나는 dex merge 이다.API level 21 (LOS)부터는 ART 기반이기 때문에 dex merge 를 수행하지 않아도 된다.따라서 minSdk 를 명시해주.. 2019. 2. 3.
[android] Browser 로부터 Share intent 받아 처리하기 [android] Browser 로부터 Share intent 받아 처리하기 https://paul.kinlan.me/sharing-natively-on-android-from-the-webhttps://developer.chrome.com/multidevice/android/intents -IntentFilter 를 아래와 같은 형태로 작성한다 -Browser 에서 Share 버튼을 눌렀을 때 다음과 같은 format 으로 url 을 작성한다.intent:#intent;action=android.intent.action.SEND;type=text/plain;S.android.intent.extra.SUBJECT=testSubject;S.android.intent.extra.TEXT=testText;en.. 2019. 2. 2.
[android] browser 에서 link 클릭했을 때 app selection 없이 내 앱으로 연결하기 (app link) -Browser 에서 link 클릭했을 때 App 으로 연결하는 기능(App 이 실행되는 기능)을 “App Links” 라고 부른다. -App Links 를 사용하기 위해서는 아래와 같은 설정이 필요하다. 1. intent-filter tag 에 속성으로 android:autoVerify=“true” 를 넣어준다. Intent filter 로 android.intent.action.VIEW 를 action 으로, android.intent.category.BROWSABLE 를 category 로 설정해준다. scheme으로 http, https 둘 다 설정해준다. 그리고 host 등의 specific 한 주소를 넣어준다. 2. assetlinks.json 파일을 해당 웹 페이지가 존재하는 web doma.. 2019. 2. 1.
반응형