분류 전체보기87 [Android] Hilt 의 SingletonComponent 는 Singleton 객체를 생성하지 않는다. Hilt 를 살펴보면 다음과 같이 SingletonComponent 라는게 존재한다.이것은 해당 Module 에서 제공하는 의존성 주입 객체를 InstallIn즉, 전역적으로 사용할 수 있게 처리해주는 것인데 나는 이것이 당연히 객체들을 Singleton 화도 시켜준다고 생각하였으나, 그것이 아니었다. # 예를 하나 들어보자.우선 DI 의 RoomDataBase 부분이다.위의 경우 SingletonComponent 로 구현되어있으며, Return 객체를 제공해줘야하므로 Provides 를 사용하여 값을 직접 주입시켜주었다. 그리고 DI 객체를 사용할 호출부는 위와 같이 API RepoImpl 클래스로 설정하였다.이제 뷰모델에서 Repository 의 Method 를 호출하고 API 수신이 성공하면 Re.. 2024. 10. 8. [Jetpack Compose] enabledEdgeToEdge 사용 시 ImePadding 에 SystemBarsPadding 가 추가로 적용되는 문제 해결법 개인 프로젝트를 진행하면서, 지금까지 잘 사용하지 않았던 EnabledEdgeToEdge 를 사용해보기로 하였다.이를 사용하면 기존에 사용했던 accompanist-systemUiController 를 사용하지 않고, 그저 enabledEdgeToEdge 의 파라미터로 색상을 넘겨주면 된다고 하여 진행하였지만, enabledEdgeToEdge 를 사용하면서 한 가지 문제가 생겼다. 바로 ImePadding 을 사용 시 SystemBar 만큼의 Padding 이 추가되는 문제가 생겼다는 것이다.이것을 해결하기 전, 예시를 보여주기 위한 코드를 설명할 것인데 해결 방법만 필요하다면 스크롤을 내려 해결 방법만 봐주면 된다. # 해결 방법을 알아보기 전, 해결법 적용 전 후 차이를 알아보기 위해 테스트용 코드를.. 2024. 10. 8. [Jetpack Compose] UI Test + API Test 를 동시에 진행하는 통합 계측테스트 진행 시 API 수신 기다리는법 앱 통합 테스트를 진행하면서 한 가지 문제가 생겼다.UI Test 를 진행하는 스크린 단에서는 MainThread 가 실행되는데, API 를 호출하고 처리하는 비즈니스 로직단에서는 ViewModelScope 를 호출하여 IO Thread 를 사용하는 것이다. @Testfun testMain(){ ComposeTestRule.onNodeWithText("API 호출").performClick() ComposeTestRule.onNodeWithTag("API 수신 성공 버튼").assertIsEnabled()}@Composablefun main(){// 클릭 시 API 호출// API 는 viewModelScope 에서 돌아감Text(modifier = Modifier.clickable { API.. 2024. 10. 7. [Android] Proguard 설정 시 Missing classes detected while running R8 after adding package names in proguard-rules.pro 에러 해결법 개인 프로젝트를 배포하기 전, Proguard 와 Shirink 를 통해 난독화 및 앱 성능을 개선하려고 Release 빌드를 시도하였다. 사진과 같이 내가 사용중인 라이브러리나 클래스들을 난독화 대상 목록에서 해제해준 뒤, 앱을 빌드하였으나 아래와 같은 에러가 발생하였다.Missing classes detected while running R8 after adding package names in proguard-rules.pro 쉽게 말하자면 R8을 실행하는 동안 누락된 클래스가 감지되었다 는 것인데, 아무리 살펴봐도 누락된 것 같은 클래스가 없어보이는데 이걸 어떻게 추가해줘야 하나 고민이 되어 인터넷을 이곳 저곳 찾아봤다. (특히, stackOverflow ..)아니나 다를까 나와 같은 문제를 겪고.. 2024. 10. 7. [Android] Mockk 로 테스트 하는 도중 This error occured due to an I/O error during the creation of this agent: 에러 해결법 testOptions { packagingOptions.jniLibs { useLegacyPackaging = true }}테스트 코드를 작성하는 도중 잠시 목업 데이터 설정을 위해 Mockk 을 설정해주었다분명 코드에 이상이 없었고, 정상적으로 실행되기를 기대했던 찰나 다음과 같은 에러 문구가 발생하였다.This error occured due to an I/O error during the creation of this agent: java.io.IOException: Unable to dlopen libmockkjvmtiagent.so: dlopen failed: library "libmockkjvmtiagent.so" not found 라이브러리를 찾을 수 없다는 문구인데,.. 2024. 10. 6. [Android] 통합 테스트 or UI 테스트 코드 작업 시, 실제 사용자 상호 작용을 기다린 후 테스트를 이어가는법 회사에서 프로젝트를 진행하며 한 가지 귀찮은 점이 생겼다.바로 테스트마다 회원가입을 자주 해야한다는 점.매 기능이 생겨날때마다 혹시 모를 사이드 이펙트를 체크하기 위해서는 회원가입을 진행해야했는데, 문제는 이 때 인증하는 과정이 여러 번 존재하여 시간도 오래 걸리고 귀찮은 부분이 많이 존재했다. 그래서 나는 이것을 반자동화하기로 결정하였다.처음에는 완전 자동화를 꿈꾸었지만, 문자 인증이나 카카오 인증 등 실 사용자만이 할 수 있는 여러 인증 상황이 존재했기에 어느 정도 타협하기로 마음을 먹은 것이다. # 하지만 한 가지 문제가 있었다..테스트 코드 중간에 잠시 일시 정지를 하고, 인증이 완료된 이후에 일시 정지를 풀어줘야 하는 로직을 구현해야 하는 것인데 이러한 기능을 제공해주는 코드는 따로 없었기에 나.. 2024. 10. 6. 이전 1 ··· 5 6 7 8 9 10 11 ··· 15 다음