Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コードカバレッジを⾒つつユニットテストを書く
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tomoya Miwa
March 18, 2019
Programming
430
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コードカバレッジを⾒つつユニットテストを書く
Tomoya Miwa
March 18, 2019
More Decks by Tomoya Miwa
See All by Tomoya Miwa
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
8.2k
Re:VIEWで書いた「Compose で Android の edge-to-edge に対応する」をRoo Codeで発表資料にしてもらった
tomoya0x00
0
690
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
470
できる!ComposeでCollapsingToolbar
tomoya0x00
0
1.1k
Compose の LazyColumn パフォーマンス改善で取り組んだこと
tomoya0x00
0
2.5k
ComposeのMutableStateってどうやってLocal Unit Testすれば良いの??
tomoya0x00
0
1.2k
意外と簡単?Navigation rail導入のお話
tomoya0x00
0
1.6k
Kotlin Coroutines Flow を触ってみた話し
tomoya0x00
2
900
Android for Carsのお話し
tomoya0x00
1
1.1k
Other Decks in Programming
See All in Programming
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
450
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
6.1k
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.3k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
210
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
360
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
GitHub Copilot CLIのいいところ
htkym
2
1.3k
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
150
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
140
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
250
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
200
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
840
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
Designing Powerful Visuals for Engaging Learning
tmiket
1
400
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
How to make the Groovebox
asonas
2
2.2k
Building Adaptive Systems
keathley
44
3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The SEO identity crisis: Don't let AI make you average
varn
0
480
Transcript
コードカバレッジを⾒つつ ユニットテストを書く tomoya0x00 Otemachi.apk #02 #otemachi_apk
About me tomoya0x00 Twitter, GitHub, Qiita Android, Embedded system, BLE/BT,
iOS DeNA Co., Ltd. Automotive Business Unit. 前回(Otemachi.apk #01)は⾵邪で登壇できなかった
みなさん、ユニットテストしてますか︖
コードカバレッジは⾒てますか︖
コードカバレッジとは︖
コードカバレッジとは︖ ソースコードのテストされた割合 測定⼿法がいくつかある
測定⼿法、2つだけご紹介
命令網羅(C0) ソースコードの 各⽂ が実⾏されているか fun hoge(x: Int) { println("hoge") if
(x > 0) { println("fuga") } } hoge(x = 1) だけで C0:100%
分岐網羅(C1) ソースコードの 各条件 が実⾏されているか fun hoge(x: Int) { println("hoge") if
(x > 0) { println("fuga") } } hoge(x = 1) と hoge(x = 0) で C1:100%
ユニットテスト + コードカバレッジ
Why?
テストコードが充分か︖ 判断基準の⼀つとして使える
例︓既存コードのリファクタリング
既存コード fun hoge(x: Int): String { if (x >= 3)
return "many" if (x == 2) return "two" if (x == 1) return "one" if (x == 0) return "zero" return "other" }
テストコードを書く @Test fun hogeTest() { assert(hoge(3) == "many") assert(hoge(2) ==
"two") assert(hoge(1) == "one") assert(hoge(0) == "zero") }
このテストコードで充分なのか・・・︖
そこでコードカバレッジ
コードカバレッジを計測する⽅法 Android Studio JaCoCo Other...?
コードカバレッジを計測する⽅法 Android Studio JaCoCo 今回はこちら Other...?
JaCoCoの準備
デフォルト設定だと、 Kotlinが計測対象とならない
JaCoCoの準備 arturdm/jacoco-android-gradle-plugin Issue 37 の JaCoCoの設定 を参考にすればOK ※上記の設定は build variants
も考慮されていてステキ
カバレッジ結果をみてみる
カバレッジ結果をみてみる $ gradlew jacocoDebugReport 実⾏後に、 app/build/reports/jacoco/jacocoDebugReport/html/index.html を開く
None
None
None
None
テストコードを⾜す @Test fun hogeTest() { assert(hoge(3) == "many") assert(hoge(2) ==
"two") assert(hoge(1) == "one") assert(hoge(0) == "zero") assert(hoge(-1) == "other") // ★追加テストコード }
None
無事、カバレッジ100%
リファクタリングも安⼼
Kotlinっぽくしてみる fun hoge(x: Int): String = when { x >=
3 -> "many" x == 2 -> "two" x == 1 -> "one" x == 0 -> "zero" else -> "other" }
None
補⾜ カバレッジ100%だからテストコード完璧、ではない でも、判断基準の⼀つとして使えます カバレッジ100%必達では無い テストコード書きづらいところは、⼿動で確認しても良いんです
ありがとうございました︕