Android/Testing8 [Android] Compose UI 테스트 (androidTest) TDD기반 개발을 진행하라테스트코드 작성에 정성을 다해라.등의 테스트코드에 대한 중요성을 정말 여러곳에서 들을 수 있었다. 하지만 안드로이드 개발을 진행하며 테스트 코드를 작성해본 적이 손에 꼽을 정도로 적어 한번 안드로이드에서의 테스트 코드를 작성해보고자 한다.단위테스트와 UI테스트단위 테스트는 응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트이다.단위 테스트에서 테스트 대상 단위의 크기는 엄격하게 정해져 있지 않지만, 일반적으로 클래스 또는 메소드 수준으로 작은 테스트를 의미한다.UI 테스트는 애플리케이션의 사용자 인터페이스 (UI)를 테스트하는 과정이다. 지정된 시나리에 따라 기능을 테스트하고 UI 동작을 확인한다.지금까지 개발하며 거의 모든테스트를.. 2024. 2. 9. [Android] UI 테스트 (3) - Espresso (Activity Rules) 이번에는 UI 테스트에서 사용하는 ActivityRule 에 대해서 설명할 것이다. Rule 에는 ActivityTestRule, ActivityScenarioRule 두 가지가 존재한다.또, Rule 없이 사용하는 방법으로 ActivityScenario 가 존재한다.구글은 ActivityScenarioRule 나 ActivityScenario 를 쓰기를 권장하고 있으니 해당 부분만 보아도 된다. TestRule우선 Rule의 동작은 간단하다. @Before 단계 이전에 실행되며@After 단계가 끝난 후 종료된다. @Before, @After 가 없으면 모든 @Test의 시작과 끝에 맞춰 실행된다. ActivityRule의 경우로 보면 @Before 단계 이전에 액티비티 Rule이 생성되고@After .. 2024. 2. 9. [Android] UI 테스트 (2) - Espresso (ViewMatcher, ViewAction, ViewAssertion) ViewMatchers, ViewActions, ViewAssertions에 포함된 함수들과 어떤 식으로 사용해야 하는지를 설명하고,주의할 점들을 알아보려 한다. ViewMatchers뷰의 상태와 Matcher 함수들을 모아 놓은 클래스이다.ViewMatchers는 뷰를 찾기 위해서도 ( onView ) 쓰고, 뷰의 상태를 확인하기 ( check ) 위해서도 사용한다.onView(withText("Welcome")) .check(matches(allOf(isDisplayed(),withText("Welcome"))))위의 코드에서 사용된 withText, isDisplayed 같은 것들이 ViewMatcher이다.ViewMatchers안에는 몇십 개 이상의 함수가 있기에 모두 소개할 수 없고, 몇 .. 2024. 2. 9. [Android] UI 테스트 (1) - Espresso란? Espresso?간단하게 설명하면 안드로이드 UI 테스트를 위한 라이브러리이다.간결한 코드로 화면 정보에 대한 어셜션을 진행할 수 있고,테스트에 집중 할 수 있도록 백그라운드 실행에 대한 동기화는 에스프레소가 처리해준다.※ 아래 과정을 진행하기 전에 Settings > Developer options으로 가서 애니메이션 관련 기능을 다 끄는 걸 권장합니다.( 애니메이션이 도는 사이에 UI 테스트가 진행되어 원치 않은 결과가 나올 수 있습니다. )시작하기android { ... defaultConfig { ... testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 이미 있음 }}dep.. 2024. 2. 9. [Android] Unit 테스트 (2) - Mockito를 이용한 Unit Test Mockito란?유닛 테스트를 위한 Java mocking framework자바 단위테스트에서 가짜 객체를 지원해주는 프레임워크즉, 단위 테스트를 하기 위해 Mock을 만들어주는 프레임워크Mockito는 Szczepan Faber and friends에 의해 서비스가 제공Mock 객체 생성, Mock 객체 동작을 지정, 그리고 테스트 대상 로직이 제대로 수행 되었는지 확인 가능자세한 내용은 공식 홈페이지 http://mockito.org/ 에서 확인 가능SetupMockito는 JUnit위에서 동작하며 Mocking과 Verification을 도와주는 프레임워크이다.build.gradle 파일을 아래의 코드와 같이 업데이트 하자. build.gradle의 depencencies에testImplementa.. 2024. 2. 9. [Android] Unit 테스트 (1) - Mock 개념(Mockito) 단위 테스트를 하기 위해서는 한번에 메서드 하나만을 실행해 보는 것인데 이러한 메서드가 다른 네트워크, 데이터베이스 등등 제어하기 어려운 것들에 의존하고 있다면 어떻게 단위 테스트를 해야할까? 즉, 코드가 해당하는 Flow가 아닌 시스템의 다른 부분에 많이 얽혀 있고 의존해있다면 단위 테스트를 하기에는 매우 어려울 것이다. 따라서 이러한 것을 돕기위해 Mock이라는 것이 나타났다 Mock이란?실제 객체를 만들어 사용하기에 시간, 비용 등의 Cost가 높거나 혹은 객체 서로간의 의존성이 강해 구현하기 힘들 경우 가짜 객체를 만들어 사용하는 방법이다. Mock 객체는 언제 필요한가?테스트 작성을 위한 환경 구축이 어려운 경우테스트가 특정 경우나 순간에 의존적인 경우테스트 시간이 오래 걸리는 경우개인 P.. 2024. 2. 9. 이전 1 2 다음