💡우아한테크코스 과정에시 진행한 LiveData를 포함한 테스트에 대하여 기록하였습니다. LiveData Testing안드로이드의 LiveData는 Android에서 UI와 데이터 상태를 관찰할 수 있도록 설계된 구조입니다.LiveData는 Lifecycle에 의존하기 때문에 직접 테스트하기에는 복잡할 수 있으며, 이를 해결하기 위해서 라이프사이클을 수동으로 조작하거나 JUnit과 함께 테스트 도구를 활용해야 합니다. JUnit4 +InstantTaskExecutorRuleLiveData는 기본적으로 백그라운드 스레드에서 동작합니다.InstantTaskExecutorRule를 활용하면 이를 테스트 환경에서 제어 가능하게 하며, 스레드 문제를 회피할 수 있습니다.InstantTaskExecutorRule..
💡우아한테크코스 활동 중에 경험한 코루틴 테스트에 대하여 기록하였습니다. RunTest?runTest는 테스트 코드를 단일 스레드에서 실행할 수 있게 해주는 함수입니다.Kotlin Coroutines Test 라이브러리에서 제공하며, 비동기 테스트 환경에서 시간을 정확하게 제어하고 예외나 지연 작업을 효과적으로 처리할 수 있습니다.runBlockingTestCoroutine 1.6 이전 버전에서 코루틴을 테스트하기 위해 사용되었지만, 1.6 이후 부터는 runBlockingTest가 Deprecated 되었기 때문에 runTest를 활용합니다.runTest를 활용할 경우 더 나은 시간 제어 및 안전성을 제공하며, 타임아웃과 시간 관련 작업의 동작을 제어할 수 있습니다.특징runTest는 기본적으로 60..
💡 우아한테크코스 과정에서 진행한 mocking을 활용한 Presenter 테스트를 기록하였습니다. 개요MVC to MVP 과정을 통해서 MVP 패턴을 구현하였습니다.구현 후 테스트 코드를 리팩터링 하는 과정에서 Presenter 테스트에 대하여 학습하였고, 그 과정을 기록하였습니다 !이전 기수의 수달님의 영상을 많이 참고하였습니다.[10분 테코톡] 수달의 mock을 사용해 android presenter test하기 MockMock은 Test Double의 종류 중 하나로 호출에 대한 기대를 명세하고 내용에 따라 동작하도록 프로그래밍 된 객체입니다.안드로이드에서는 Mockito 프레임워크를 사용해 Mock 객체를 사용할 수 있으며, 이를 통해 테스트 상에서 어떤 결과를 반환할지 결정이 가능해집니다.T..
💡 UI 작업을 XML과 Code, Jetpack Compose 진행했을 때의 차이를 비교하고 테스트를 진행하였습니다. 개요XML과 Programmatically 방식에 대한 차이점이 궁금하던 중 직접 테스트한 블로그를 발견하여 학습하게 되었습니다.Performance comparison: building Android Layout with XML vs By Code vs Jetpack Compose Performance comparison: building Android Layout with XML vs By Code vs Jetpack ComposeThe time required to create the activity layout in XML vs by code programmatically vs..
💡 우아한테크코스 과정을 진행하면서 배웠던 UI 테스트에 대하여 다시 한번 돌아보고 학습하는 시간을 가졌습니다 ! UI 테스트사용자와 앱 간에 인터페이스가 올바르게 작동하는지 확인하려면 UI 테스트를 진행하는 것이 좋습니다.UI 테스트를 작성하면 복잡한 UI 로직이나 기존에 개발되어 있는 인터페이스를 보장합니다.테스트 코드의 필요성테스트 코드를 작성하면 장애에 관한 신속한 피드백이 가능합니다.개발 주기에서 초기 장애를 감지하고, 더 안전한 코드 리팩터링을 제공합니다.또한 기술적 문제를 최소화하기 때문에 안정적인 개발 속도를 얻을 수 있습니다.계측 테스트(Instrumentation Test)앱의 실제 디바이스 또는 애뮬레이터에서 동작하는 테스트를 실행하는 데 사용됩니다.애뮬레이터를 켜고 앱을 빌드하여 ..
💡 테스트 환경에서 private 메소드를 검증해야 하는 경우가 발생하였고, 이를 해결하기 위한 방법을 학습하였습니다. private 함수 테스트 문제점MonthPicker 클래스는 유효한 달을 검사하고, 모든 달의 일을 30일로 가정하여 합을 구하는 클래스입니다.makeDays를 통해서 내부의 가변인자로 들어온 값이 모두 정확한 달인지 isValid를 통해 검사하고 있습니다.class MonthPicker() { fun makeDays(vararg months: Int): Int { if (isValid(*months)) throw IllegalArgumentException(ERROR_MONTH) return months.reduce { acc, month -> ..