리사이클러뷰 스크롤 시, ComposeView가 초기화 된다면 ViewCompositionStrategy를 변경합니다. - 원인 기본적으로 Compose는 DisposeOnDetachedFromWindowOrReleasedFromPool 전략을 사용합니다. 리사이클러뷰에서 Detach 되면서 - 해결방법 DisposeOnViewTreeLifecycleDestroyed 전략 설정 setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) 참고 https://developer.android.com/jetpack/compose/interop/interop-apis?hl=ko#composition-strategy
TL;DR Background를 설정하여 버튼을 쉽게 커스텀할 수 있다. 이 경우에 버튼의 최소 크기 설정으로 인하여 Padding이 잘 설정되지 않는다. 원하는 만큼의 Padding을 정확히 설정해주기 위해서는 android:minWidth android:minHeight 두 개 필드의 값을 0dp로 설정하여 기본 사이즈 값을 제거해야 한다. 본론 안드로이드 앱에서 버튼은 당연하게 사용되는 아주 중요한 컴포넌트다 안드로이드 버튼을 그냥 사용하는 일은 거의 없고 대부분 커스텀 된 디자인을 적용하여 사용할 것이다. 안드로이드 버튼을 커스텀하는 가장 대표적인 방식으로 Background Drawable XML 파일을 만들어 디자인을 설정하고 버튼의 Background로 설정하여 커스텀하는 방법이 있다. Ba..
유닛테스트에 어떤 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. Annotation 2. Mock Object 3. Method Stub 4. Spy Object 5. Assert 6. Verify 6. Verify class UnitLocalDataSourceTest { lateinit var unitLocalDataSource: UnitLocalDataSource val map = mutableMapOf() val testUnitId = "testId" @MockK lateinit var unitSettings: UnitSettings @MockK lateinit var testUnit: Unit @Test fun testGetUnit_found() { every { spyMap.get(testUnit.id.toString()) } returns testUn..
1. Annotation 2. Mock Object 3. Method Stub 4. Spy Object 5. Assert 6. Verify 5. Assert class UnitLocalDataSourceTest { lateinit var unitLocalDataSource: UnitLocalDataSource val map = mutableMapOf() val testUnitId = "testId" @MockK lateinit var unitSettings: UnitSettings @MockK lateinit var testUnit: Unit @Test fun testGetUnit_found() { every { spyMap.get(testUnit.id.toString()) } returns testUn..
1. Annotation 2. Mock Object 3. Method Stub 4. Spy Object 5. Assert 6. Verify 4. Spy Object class UnitLocalDataSourceTest { lateinit var unitLocalDataSource: UnitLocalDataSource val map = mutableMapOf() // 실제 Map 객체를 감싸 Spy 객체 생성 @SpyK val spyMap = spyk(map) @MockK lateinit var unitSettings: UnitSettings @MockK lateinit var testUnit: Unit @Test fun testPutUnit() { unitLocalDataSource.putUnit(tes..
1. Annotation 2. Mock Object 3. Method Stub 4. Spy Object 5. Assert 6. Verify 3. Method Stub class UnitRepositoryImplTest { @MockK(relaxUnitFun = true) lateinit var unitDataSource: UnitDataSource lateinit var unitRepository: UnitRepository private val unitRequest = "unitId" @Before fun setup() { MockKAnnotations.init(this) unitRepository = UnitRepositoryImpl(unitServiceApi, unitDataSource, sched..
- Total
- Today
- Yesterday
- 커스텀 버튼
- 컴포즈 초기화
- Unit
- 알고리즘
- android test
- 안드로이드 종속성 주입
- 테스트
- androud hilt
- 안드로이드 단위 테스트
- ViewCompositionStrategy
- android custom button
- unit test
- 안드로이드
- Android
- 안드로이드 커스텀 버튼
- AOS
- 알고리즘 풀이
- compose ui
- android unit test
- android compose
- 유닛테스트
- 안드로이드 테스트
- 안드로이드 컴포즈
- 구글
- 안드로이드 유닛 테스트
- button padding
- 코딩테스트
- 유닛 테스트
- 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 |