이 영역을 누르면 첫 페이지로 이동
스니펫 텔러 | Snippet Teller 블로그의 첫 페이지로 이동

스니펫 텔러 | Snippet Teller

페이지 맨 위로 올라가기

스니펫 텔러 | Snippet Teller

아이템이나 서비스 리뷰, 해외생활 등 좋은 정보와 이야기들을 짧고 읽기 쉽게 요약해, 빠르게 전달해 드립니다.

Appium + Kotlin = 🚀

  • 2020.03.31 20:56
  • 👨🏻‍💻 QA이야기/📱 모바일자동화
반응형

 

🗒️ 시작

 

Appium은 2012년 처음 오픈소스가 되었을 때부터 사용해왔다. 그동안 Appium만 사용해온 것은 아니다. 각 회사와 팀에 맞는 툴들이 있고, 그 옵션 중 하나일 뿐이다. 보통 Appium을 사용하게 되는 환경과 이유는 보통 다음과 같다.

 

  • iOS와 Android 두 모바일 플랫폼에 대한 테스트 자동화
  • Selenium에 대한 지식

 

2019년 1월부터 회사에서 현재까지 진행하는 프로젝트 중 하나는 Appium을 사용하여 iOS와 Android 어플리케이션의 E2E 테스트 자동화 시스템을 처음부터 디자인하고 키우는 일을 하고 있다. Appium은 Selenium 베이스라 어떤 언어로도 사용 가능하지만, Java 클라이언트가 가장 사용량이 많고, 그만큼 서포트가 빠르며 안정된 클라이언트이기 때문에, 아마 Appium 사용자의 80% 이상이 Java를 개발언어로 선택해 사용하고 있을 것이다. 나 또한 그래왔다.

 

구글에서는 Kotlin을 Android 개발의 메인 언어로 밀고 있다. 실제로 많은 사람들이 Java에서 Kotlin으로  변환을 하고 있다. IntelliJ나 Android Studio에서는 Java 코드를 Kotlin으로 자동 변환시켜주는 툴이 있고, 이는 생각보다 정확도가 높다.

 

1. Java dependency 호환성도 문제가 없어 보인다

2. 셋업도 어렵지 않아 보인다

3. 더 간편해 보이는, 그리고 뜨고 있는 언어 하지만 Java와 그렇게까지 크지 않은 Gap

 

이 세 가지 이유만으로도 Kotlin을 사용해 볼 이유가 충분했다.

 

 

 

 

🧰 프로젝트 설정하기

Appium + Kotlin 환경은 gradle을 사용하여 간편하게 프로젝트를 구축할 수 있다.

 

build.gradle

buildscript {
    ext.kotlinVersion = "1.3.71"

    repositories {
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    }
}

apply plugin: "java"
apply plugin: "kotlin"

group = "AppiumKotlin"
version = "1.0.0"
description = "AppiumKotlin"

sourceSets {
    test.kotlin.srcDirs += "src/test/kotlin"
    test.java.srcDirs += "src/test/kotlin"
}

repositories {
    mavenLocal()
    maven { setUrl("https://repo.maven.apache.org/maven2") }
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")

    implementation("io.appium:java-client:7.3.0")
    implementation("org.seleniumhq.selenium:selenium-java:3.141.59")
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

이제 src/test/kotlin 안에 패키지와 class들을 정리해주면 컴파일 문제는 없을 것이다. 

 

 

 

 

🧹 코드 정리하기

Kotlin 코드 linting은 Kotlinter를 사용했다. 간편하게 셋업하고 사용할 수 있어 좋다.

 

build.gradle

buildscript {
    ...
    dependencies {
        ...
        classpath "org.jmailen.gradle:kotlinter-gradle:2.3.2"
    }
}

...
apply plugin: "org.jmailen.kotlinter"

...

kotlinter {
    // gradle formatKotlin / gradle lintKotlin
    // org.jmailen.gradle.kotlinter.KotlinterExtension
    ignoreFailures = false
    indentSize = 2
    reporters = ['json']
    experimentalRules = false
    fileBatchSize = 30
    disabledRules = ["no-wildcard-imports"]
}

 

위와 같은 방식으로 간편하게 원하는 셋업을 마친 후, gradle formatKotlin를 실행하면 자동 정리 및 에러 또한 관리해 알려준다. CI 스텝에서의 경우 gradle lintKotlin을 실행해주면 확인이 가능하다.

 

 

 

✔️ 1년 리뷰

Appium을 Kotlin으로 사용한 지 1년이 넘었다. 간단한 리뷰를 하자면 굉장히 만족스럽다.

  • Kotlin을 쉽게 배울 수 있었고, 코드 자체 또한 굉장히 보기에 간결해졌다.
  • Android 개발자들의 지원 및 관심을 받기에도 충분했다. 같이 배워가는 입장에서 즐겁다.
  • 온라인에 Kotlin으로 나온 Appium 사용 예제는 1도 없다. 그러므로 Java를 검색해서 변환하던가, 내가 개척해야 한다.
반응형
저작자표시 비영리 변경금지 (새창열림)

'👨🏻‍💻 QA이야기 > 📱 모바일자동화' 카테고리의 다른 글

Kotlin으로 ☕ Espresso UI 테스트 기반 잘 다지는 법 #1 - 테스트 케이스  (0) 2020.04.12
Swift로 🍏 UI XCTest 기반 잘 다지는 법 #2 - Action  (0) 2020.04.04
Swift로 🍏 UI XCTest 기반 잘 다지는 법 #1 - 테스트 케이스  (0) 2020.04.04
🥒 Cucumber 이해하고 잘 쓰는 방법  (0) 2020.04.03
🗳️ QA의 모바일 자동화를 위한 개발환경  (0) 2020.04.01

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Swift로 🍏 UI XCTest 기반 잘 다지는 법 #2 - Action

    Swift로 🍏 UI XCTest 기반 잘 다지는 법 #2 - Action

    2020.04.04
  • Swift로 🍏 UI XCTest 기반 잘 다지는 법 #1 - 테스트 케이스

    Swift로 🍏 UI XCTest 기반 잘 다지는 법 #1 - 테스트 케이스

    2020.04.04
  • 🥒 Cucumber 이해하고 잘 쓰는 방법

    🥒 Cucumber 이해하고 잘 쓰는 방법

    2020.04.03
  • 🗳️ QA의 모바일 자동화를 위한 개발환경

    🗳️ QA의 모바일 자동화를 위한 개발환경

    2020.04.01
다른 글 더 둘러보기

정보

스니펫 텔러 | Snippet Teller 블로그의 첫 페이지로 이동

스니펫 텔러 | Snippet Teller

  • 스니펫 텔러 | Snippet Teller의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 전체보기 (467)
      • 📋 일상이야기 (20)
      • 🇩🇪 베를린이야기 (42)
      • 🇰🇷 한국이야기 (3)
      • 🏅 리뷰이야기 (79)
        • 해외직구 (6)
        • 온라인서비스 (20)
        • 유럽생활 (15)
        • 그 외 (38)
      • 👨🏻‍💻 QA이야기 (19)
        • ⚙️ Quality Engineering (12)
        • 📱 모바일자동화 (7)
      • 🎗 생각하는 글 (49)
      • 🎮 게임정보 (253)
    반응형

    공지사항

    • 공지 - 블로그 공지사항

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기

    정보

    무워 | hsoochun의 스니펫 텔러 | Snippet Teller

    스니펫 텔러 | Snippet Teller

    무워 | hsoochun

    블로그 구독하기

    • 구독하기
    • RSS 피드
    Powered by Tistory / Kakao. © 무워 | hsoochun. Designed by Fraccino.

    티스토리툴바