리사이클러뷰 스크롤 시, ComposeView가 초기화 된다면 ViewCompositionStrategy를 변경합니다. - 원인 기본적으로 Compose는 DisposeOnDetachedFromWindowOrReleasedFromPool 전략을 사용합니다. 리사이클러뷰에서 Detach 되면서 - 해결방법 DisposeOnViewTreeLifecycleDestroyed 전략 설정 setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) 참고 https://developer.android.com/jetpack/compose/interop/interop-apis?hl=ko#composition-strategy
Android Studio arctic fox(2020.3) 업데이트 후, Kotlin 함수에 Unresolved reference 오류가 발생했을 경우 터미널에서 Android Studio arctic fox 캐시를 삭제하여 해결할 수 있다. rm -r ~/.cache/Google/AndroidStudioPreview2020.3 레퍼런스 - https://youtrack.jetbrains.com/issue/KT-39776#focus=Comments-27-4860139.0-0
TL;DR Background를 설정하여 버튼을 쉽게 커스텀할 수 있다. 이 경우에 버튼의 최소 크기 설정으로 인하여 Padding이 잘 설정되지 않는다. 원하는 만큼의 Padding을 정확히 설정해주기 위해서는 android:minWidth android:minHeight 두 개 필드의 값을 0dp로 설정하여 기본 사이즈 값을 제거해야 한다. 본론 안드로이드 앱에서 버튼은 당연하게 사용되는 아주 중요한 컴포넌트다 안드로이드 버튼을 그냥 사용하는 일은 거의 없고 대부분 커스텀 된 디자인을 적용하여 사용할 것이다. 안드로이드 버튼을 커스텀하는 가장 대표적인 방식으로 Background Drawable XML 파일을 만들어 디자인을 설정하고 버튼의 Background로 설정하여 커스텀하는 방법이 있다. Ba..
Dependency Inject는 앱 개발에 있어 복잡한 생성코드를 제거하고, 객체의 라이프사이클을 효과적으로 관리할 수 있다는 장점이 있다. 또한 DI를 통해 종속 관계를 잘 정리하였다면, 테스트 코드도 객체를 주입하거나 Mock 객체를 생성하여 빠르고 쉽게 작성할 수 있다 안드로이드에서 가장 많이 쓰이는 DI 라이브러리는 Dagger다 구글에서 직접 관리하며 안드로이드 개발자 페이지에서도 Dagger에 대한 개발 가이드를 제공하고있으니 믿고 사용하면 된다. 하지만 Dagger를 사용하는 것은 상당히 어려운 일이다. Dagger를 사용한 초반에는 이 것이 어떻게 동작을 하는지 이해하는 것부터 어렵다. 이해를 포기하고 일단 써보자는 식으로 접근하여도, Module,Component 등 생성해야하는 것들과..
개발자는 개발 브랜치를 생성하여 소스 코드를 변경하거나 새로운 기능을 추가하고 버전 관리 시스템(GitHub)에 기록(Commit)하고, PR(Pull Request) 및 배포 브랜치(Master Branch)에 통합하는 작업(PR 머지)을 수행합니다. 이 과정은 단일 리포지토리(프로젝트)에서 여러 개발자에 의해 동시다발적으로 진행되며 각자의 작업물을 통합하는 과정에서 서로의 작업이 겹치거나 충돌되지 않는지, 누락된 파일은 없는지 등 통합 이후에 제품이 정상적으로 동작할 수 있도록 철저한 확인 작업을 거쳐야합니다. 확인 작업을 거쳐 작업물이 통합되었다면, 배포 브랜치는 배포 가능한 상태를 유지하기 위해 통합 직후 및 주기적으로 빌드 및 테스트를 진행하여 발생할 수 있는 오류나 버그를 사전에 발견하고 수정..
유닛테스트에 어떤 Scheduler를 사용해야하나요? MainScheduler , IoScheduler 관계없이 Schedulers.trampoline()를 사용합니다. class FetchLockScreenUnitUseCaseTest { lateinit var fetchLockScreenUnitUseCase: FetchLockScreenUnitUseCase private val scheduler = Schedulers.trampoline() @MockK(relaxUnitFun = true) lateinit var unitRepository: UnitRepository @Before fun setUp() { MockKAnnotations.init(this) fetchLockScreenUnitUseCase..
원인 로컬 유닛 테스트는 안드로이드 구성요소를 사용할 수 없습니다. 안드로이드 구성 요소인 android util Log를 찾을 수 없어 에러가 발생합니다. 해결 방법 Unit Test에 사용할 Mock Log 클래스를 생성합니다. /src/test/java/android/util 하위 경로에 아래 소스코드를 추가합니다. package android.util; public class Log { public static int d(String tag, String msg) { System.out.println("DEBUG: " + tag + ": " + msg); return 0; } public static int i(String tag, String msg) { System.out.println("IN..
1. Naming your tests 테스트의 의도를 명시적으로 표현하기위해 테스트의 이름은 다음 세 부분으로 구성되어야 합니다. a. 테스트할 메서드의 이름 b. 테스트 중인 시나리오 c. 시나리오에서 호출될 때 예상되는 동작 결과 테스트는 단순히 코드가 동작하는지 확인하는 것 이상으로, 테스트 코드를 살펴봄으로써 코드의 동작을 유추할 수 있어야합니다. Bad: fun test_Single() { var stringCalculator = StringCalculator() var actual = stringCalculator.add("0") assertEquals(0, actual) } Better: fun add_SingleNumber_ReturnsSameNumber() { var stringCalcu..
- Total
- Today
- Yesterday
- androud hilt
- 유닛 테스트
- Unit
- 테스트
- 안드로이드
- unit test
- android unit test
- 코딩테스트
- 안드로이드 유닛 테스트
- android test
- 안드로이드 커스텀 버튼
- 유닛테스트
- Android
- 컴포즈 초기화
- AOS
- 안드로이드 컴포즈
- android custom button
- 커스텀 버튼
- 안드로이드 테스트
- ViewCompositionStrategy
- button padding
- 알고리즘
- 안드로이드 단위 테스트
- 안드로이드 종속성 주입
- 알고리즘 풀이
- compose ui
- android compose
- Leetcode
- 구글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |