분류 전체보기

    [codelab 5.2 - 3]Testing Strategy - 테스트 전략 개념 소개(테스트 피라미드, )

    이 코드 랩에서는 test doubles 과 dependency injection을 사용하여 repositories, view models, fragments를 테스팅하는 방법을 배웁니다. 그전에 이러한 테스트를 작성하기위해 무엇을 어떻게 해야하는지 가이드하는 방법론을 이해하는 것이 중요합니다. 이 섹션에서는 Android에 적용되는 일반적인 테스트 모범 사례를 다룹니다. The Testing Pyramid 테스트 전략에 대해 생각할때 다음 3가지 관점에서 살펴볼수 있습니다. 범위Scope — 테스트는 얼마나 많은 코드를 다루나요? 테스트는 단일 메서드, 전체 애플리케이션 또는 그 중간 어딘가에서 실행할 수 있습니다. 속도Speed — 테스트는 얼마나 빨리 실행됩니까? 테스트 속도는 밀리 초에서 몇 분까..

    [codelab 5.1 -8 9 10]AndroidX 테스트로 ViewModel(LiveData 관찰되는지) 테스트

    CodeLab 05.1 Testing Basics 목차 (Task 8) [ViewModel]테스트 (Task 9) [LiveData] 테스트 (Task 10) multiple [ViewModel]테스트 이번코드랩에서는 대부분의 앱에서 공통적으로 사용되는 두 가지 Android 클래스(ViewModel & LiveData)에 대한 테스트를 작성하는 방법을 배웁니다. Task 8 : AndroidX 테스트로 ViewModel 테스트 설정 Setting up a ViewModel Test with AndroidX Test ViewModel에 모든 로직이 있고 Repository에 의존하지 않는 테스트를 수행하려 합니다. Repository 코드에는 테스트를 더 복잡하게하는 '비동기 코드', '데이터베이스' 및..

    [codelab 5.1 - 5 6 7] Android Test 종류, [일반 클래스] Local Unit Test, TDD

    CodeLab 05.1 Testing Basics 목차 (Task 5)Source sets : 계측(Instrumented) Test / 로컬(Local) Test (Task 6) [일반 클래스]를 로컬 단위 테스트(Local Unit Test) 하기 (Task 7) 테스트 주도 개발(TDD) 체험하기 1) 안드로이드에서 테스트의 기초를 학습함을 목표로 합니다. Android에서 단위 테스트를 작성하고 실행하는 방법 테스트 주도 개발(TDD)을 사용하는 방법 계측 테스트(instrumented tests) 및 로컬 테스트(local tests)를 선택하는 방법 2) 학습하게 될 라이브러리 JUnit4 햄크레스트(Hamcrest) AndroidX 테스트 라이브러리 AndroidX Architecture 구..

    내부(innter)클래스 중첩(nested)클래스 그리고 메모리 누수

    java에서는 A클래스 안에 B클래스를 정의하면 안에 정의된 B클래스는 자동으로 내부클래스가 됩니다. java에서 객체가 삭제되는 시점은 객체가 더 이상 사용되지 않을때입니다. 내부클래스에서는 외부클래스를 항상 참조하고있습니다. 따라서 A클래스가 삭제되더라도 내부클래스인 B 클래스는 삭제되지않고 살아있게되어 (원하는 시점에 적절하게 객체가 삭제되지 못함) 메모리 누수가 발생하기됩니다. (그래서 실제 프로젝트에서 내부클래스로 개발되었던 코드들을 모두 수정했습니다.) 더보기 Inner Class Reference 관련 해결방법 1. 내부 클래스의 정적 변수를 만들지 말자 2. 클래스를 정적으로 설정해야 한다. 익명 클래스의 인스턴스는 "static"인 경우 외부 클래스에 대한 암시 적 참조를 보유하지 않습니..

    동기/비동기, 동시성/병렬성

    동기처리 / 비동기처리 동기 처리 (Synchronous : 요청과 결과가 동시에 일어나는..) 1개의 루틴을 완료한 후 다른 루틴을 샐행하는 순차적인 방식 요청과 결과가 한 자리에서 동시에 일어남 A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다 주로 하나의 작업 혹은 수행시간이 짧은 작업들을 (요청과 결과를 동기 처리하면서) 처리할때 작업처리 단위를 맞추면서 수행하는것을 말함 보통 목적이 같은 일을 진행하기 때문에 요청과 결과를 동시에 일어나도록 처리 단위를 맞춘다. 비동기 처리 (Asynchronous : 요청과 결과가 동시에 일어나지 않을거라는...) 다중 실행 환경에서 여러개의 루틴이 선행 작업의 순서나 완료 여부와 상관없이 실행되는 방식 요청한 결과가 그 자리에서..

    Android Thread 처리 방법

    new Thread() 생성해서 사용 ↓ ↓ Executor의 클래스를 통해 thread 기능별 분리하여 처리 ↓ ↓ Rxjava를 통한 (reactive programming) 비동기처리 ≡ Kotlin의 coroutine 을 통한 비동기처리