Android
-
[ANDROID] Local Unit Test 맛보기.ANDROID/TEST 2022. 10. 27. 00:56
안드로이드 스튜디오에서 새로운 프로젝트를 생성하면 테스트에 관련된 아래와 같은 Dependency들이 자동으로 추가된다. testImplementation("junit:junit${Versions.JUNIT4}") androidTestImplementation("androidx.test.ext.junit${Versions.ANDROID_JUNIT}") androidTestImplementation("androidx.test.espresso:espresso-core:${Versions.ESPRESSO}") JVM만으로만 실행이 가능한 테스트 Dependency는 testImplementation으로 추가하고 에뮬레이터나 실기기를 필요로하는 테스트 Dependencysms androidTestImplemen..
-
[ANDROID] 안드로이드 테스트 자동화 기초ANDROID/TEST 2022. 10. 25. 21:44
Software Testing Testing는 Software 개발과 함께 시작된 행위이다. 테스트 방법론 피라미드 vs 아이스크림 콘 테스트 커버리지 100%를 목표로 해야한다 vs 100%는 무의미하다. 테스트 먼저 vs 구현 먼저 테스트 자동화의 필요성 테스트 유형 기능 테스트 : 앱이 기능을 수행합니까? 성능 테스트 : 빠르고 효율적으로 수행합니까? 접근성 테스트 : 접근성 서비스와 잘 작동합니까? 호환성 테스트 : 모든 기기와 API 수준에서 잘 작동합니까? 수동 테스트 - 앱을 빌드하고 시뮬레이터에서 터치해가며 확인, 개발자가 앱을 수동으로 100% 테스트하는것은 불가능, QA팀을 사용하는 방법도 있으나 개발 비용 증가. 빌드시간 증가 비용증가 자동 테스트 개발시간 감소 비용 절감 견고한 구조..
-
[ANDROID] Android Build Tool, KTSANDROID 2022. 10. 25. 18:46
Build Tool이란? 소스코드를 바이너리코드로 컴파일한 다음 그 바이너리코드를 서로 링크해서 실행가능한 파일로 패키징하는 것을 소프트웨어를 빌드한다고 말한다. 실제 프로덕션의 빌드 과정은 컴파일과 링크 이외에도 연관된 의존성 다운로드 소스 코드를 바이너리 코드로 컴파일 바이너리 코드 링크하여 실행가능 파일로 패키징 테스트 수행 프로덕션 시스템에 배포 등과 같은 작업이 필요하다. 소스코드를 하나하나 수정할 때마다 이 과정을 거치는 것은 노력이 많이 들어가기 때문에 일반적으로는 이 작업을 자동으로 수행해주는 Build Tool이라는 프로그램을 사용한다. Android 채택 언어인 Java의 Build Tool은 Ant, Maven, Gradle 순으로 개선되어져 왔다. Java의 빌드 툴 Make 197..
-
[CS] 의존성 주입CS/디자인패턴 2022. 9. 29. 03:14
의존성 주입 의존성 주입은 객체지향 프로그래밍 개념중 하나이다. 이것을 이해하기 위해서 객체지향 프로그래밍의 SOLID 원칙에 대한 이해가 필요하다. SOLID 원칙 솔리드 원칙이란 로버트 마틴이 2000년에 발표한 객체지향 프로그래밍 및 설계의 기본 원칙을 마이클 페더스가 두문자어 기억법을 써서 5가지로 정리한 것이다. 단일 책임 원칙 (Single responsibility principle, SRP) 개방-폐쇄 원칙 (Open-colsed principle, OCP) 리스코프 치환 원칙 (Liskove substitution principle, LSP) 인터페이스 분리 원칙 (Interface segregation principle, ISP) 의존성 역전 원칙 (Dependency inversio..
-
[ANDROID] LEAKCANARY dictionaryANDROID 2021. 12. 27. 14:59
글을 쓰는 이유. leak canary는 메모리릭이 어디서 발생 되었는지는 나오나 정확한 이유는 찾기 어렵다. 때문에 내가 전에 발생시켰던 릭들은 언제가 다시 발생할 가능성이 높다. 때문에 릭이 났던 원인을 정리하고 참고 하기 위해 릭을 정리한다. 메모리 릭이 발생하는 경우 액티비티의 컨텍스트를 필드로 저장한느 것. 설정(configration 변경으로 인해 액티비티가 재 생산 되는 경우. 객체의 라이프사이클을 가지고 있는 리스너, 브로드캐스트 리시버 RxJava subscription을 등록하고 라이프 사이클이 끝났을 때 해지하지 않은 경우 뷰를 정적 필드에 저장하고 뷰가 해제 될때 필드를 지우지 않은 경우 viewModel에서 context를 사용하는 경우. (viewModel의 라이프 사이클이 v..