Appium + Kotlin = 🚀
🗒️ 시작
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 |
댓글
이 글 공유하기
다른 글
-
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