SlideShare a Scribd company logo
Copyright © DeNA Co.,Ltd. All Rights Reserved.
9 3 19 8 (
) ( 0
CDE
2 .3 A
1 , # / #
Copyright © DeNA Co.,Ltd. All Rights Reserved.
n
•
• 8
• 2 3
Copyright © DeNA Co.,Ltd. All Rights Reserved.
n S
n P
-1 1F
0D D: 1 K Y P
8 1 : D 2D
1 D
I D2 , G D 2D 1 . D
/ 1 H
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
./gradlew uploadArchives
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
./gradlew helloWorld ¥
--refresh-dependencies
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
Assemble
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
( )
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
( )
./gradlew install
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
( )
./gradlew helloWorld
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
)
Maven
( (
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
) (
Assemble
)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. ( ) .
(
)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
( )
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
dependencies {
testImplementation gradleTestKit()
}
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
G I
# : .2 / - - - - - -
1 .8- 0: . / 8:0 - ::/ /:0 2./ / 2 1
/ 2 - 1 2 /- 28
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.build()
then:
result.output.contains(‘Hello world!’)
result.task(“:helloWorld”).outcome == SUCCESS
) / ( (
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.build()
then:
result.output.contains(‘Hello world!’)
result.task(“:helloWorld”).outcome == SUCCESS
) / ( (
.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.build()
then:
result.output.contains(‘Hello world!’)
result.task(“:helloWorld”).outcome == SUCCESS
) / ( (
./gradlew helloWorld
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.build()
then:
result.output.contains(‘Hello world!’)
result.task(“:helloWorld”).outcome == SUCCESS
) / ( (
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.build()
then:
result.output.contains(‘Hello world!’)
result.task(“:helloWorld”).outcome == SUCCESS
) / ( (
Copyright © DeNA Co.,Ltd. All Rights Reserved.
./gradlew test
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.withGradleVersion(version)
.build()
where:
version | _
“4.1” | _
“3.3” | _
...
“2.13” | _
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. -
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
3 /43 A
Copyright © DeNA Co.,Ltd. All Rights Reserved.
. -
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3
3 /43 A
C ON M G D
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”, “--no-daemon”)
.withGradleVersion(version)
.build()
. -
Copyright © DeNA Co.,Ltd. All Rights Reserved.
when:
def result = GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(“helloWorld”)
.withGradleVersion(version)
.withDebug(true)
.build()
Copyright © DeNA Co.,Ltd. All Rights Reserved.
( )
Java (Gradle Daemon) D
Copyright © DeNA Co.,Ltd. All Rights Reserved.
( ) ( ) .
n 33 R
. - 1 - 3 - / / . 21 /
2 / /1/ :
#
Copyright © DeNA Co.,Ltd. All Rights Reserved.
n . ) (
A D E
Copyright © DeNA Co.,Ltd. All Rights Reserved.
n S KS R G D
n ( T G
n ( (
n . )

More Related Content

Similar to テストを書いてGradleプラグインの開発効率を改善しよう

LISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial HandoutsLISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial Handouts
Tobias Oetiker
 
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode ObjectsEWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
Rob Tweed
 
Neoito — React 101
Neoito — React 101Neoito — React 101
Neoito — React 101
Neoito
 
Green Marl 最新お役立ちTIPS
Green Marl 最新お役立ちTIPSGreen Marl 最新お役立ちTIPS
Green Marl 最新お役立ちTIPS
Tamakoshi Hironori
 
Oracle GoldenGate
Oracle GoldenGateOracle GoldenGate
Oracle GoldenGate
Anar Godjaev
 
Zero To Dojo
Zero To DojoZero To Dojo
Zero To Dojo
Peter Higgins
 
Test Engineering on Mobage
Test Engineering on MobageTest Engineering on Mobage
Test Engineering on Mobage
Masaki Nakagawa
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Cisco DevNet
 
AngularJS in practice
AngularJS in practiceAngularJS in practice
AngularJS in practice
jhoguet
 
Getting the Most From Today's Java Tooling With Neo4j
Getting the Most From Today's Java Tooling With Neo4jGetting the Most From Today's Java Tooling With Neo4j
Getting the Most From Today's Java Tooling With Neo4j
Neo4j
 
GAE/Go 選定から活用まで
GAE/Go 選定から活用までGAE/Go 選定から活用まで
GAE/Go 選定から活用まで
Hiroyoshi Houchi
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
Olivier Destrebecq
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode Object
Rob Tweed
 
Lesson Learned from Using Docker Swarm at Pronto
Lesson Learned from Using Docker Swarm at ProntoLesson Learned from Using Docker Swarm at Pronto
Lesson Learned from Using Docker Swarm at Pronto
Kan Ouivirach, Ph.D.
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
AddWeb Solution Pvt. Ltd.
 
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarDocker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Applitools
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
Nick Plante
 
Jenkins entwined with deployment and pragmatism
Jenkins entwined with deployment and pragmatismJenkins entwined with deployment and pragmatism
Jenkins entwined with deployment and pragmatism
Eric Ritchie
 
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
Bruno Salvatore Belluccia
 
Introduction to CMake
Introduction to CMakeIntroduction to CMake
Introduction to CMake
Dimitrios Platis
 

Similar to テストを書いてGradleプラグインの開発効率を改善しよう (20)

LISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial HandoutsLISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial Handouts
 
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode ObjectsEWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
 
Neoito — React 101
Neoito — React 101Neoito — React 101
Neoito — React 101
 
Green Marl 最新お役立ちTIPS
Green Marl 最新お役立ちTIPSGreen Marl 最新お役立ちTIPS
Green Marl 最新お役立ちTIPS
 
Oracle GoldenGate
Oracle GoldenGateOracle GoldenGate
Oracle GoldenGate
 
Zero To Dojo
Zero To DojoZero To Dojo
Zero To Dojo
 
Test Engineering on Mobage
Test Engineering on MobageTest Engineering on Mobage
Test Engineering on Mobage
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
 
AngularJS in practice
AngularJS in practiceAngularJS in practice
AngularJS in practice
 
Getting the Most From Today's Java Tooling With Neo4j
Getting the Most From Today's Java Tooling With Neo4jGetting the Most From Today's Java Tooling With Neo4j
Getting the Most From Today's Java Tooling With Neo4j
 
GAE/Go 選定から活用まで
GAE/Go 選定から活用までGAE/Go 選定から活用まで
GAE/Go 選定から活用まで
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode Object
 
Lesson Learned from Using Docker Swarm at Pronto
Lesson Learned from Using Docker Swarm at ProntoLesson Learned from Using Docker Swarm at Pronto
Lesson Learned from Using Docker Swarm at Pronto
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
 
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarDocker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 
Jenkins entwined with deployment and pragmatism
Jenkins entwined with deployment and pragmatismJenkins entwined with deployment and pragmatism
Jenkins entwined with deployment and pragmatism
 
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
 
Introduction to CMake
Introduction to CMakeIntroduction to CMake
Introduction to CMake
 

More from Shunsuke Maeda

私とOSS活動とPerl
私とOSS活動とPerl私とOSS活動とPerl
私とOSS活動とPerl
Shunsuke Maeda
 
外部環境への依存をテストする
外部環境への依存をテストする外部環境への依存をテストする
外部環境への依存をテストする
Shunsuke Maeda
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
Shunsuke Maeda
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
Shunsuke Maeda
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
Shunsuke Maeda
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
Shunsuke Maeda
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
 

More from Shunsuke Maeda (7)

私とOSS活動とPerl
私とOSS活動とPerl私とOSS活動とPerl
私とOSS活動とPerl
 
外部環境への依存をテストする
外部環境への依存をテストする外部環境への依存をテストする
外部環境への依存をテストする
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 

Recently uploaded

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 

Recently uploaded (20)

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 

テストを書いてGradleプラグインの開発効率を改善しよう

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. 9 3 19 8 ( ) ( 0 CDE 2 .3 A 1 , # / #
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. n • • 8 • 2 3
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. n S n P -1 1F 0D D: 1 K Y P 8 1 : D 2D 1 D I D2 , G D 2D 1 . D / 1 H
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved.
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved.
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ./gradlew uploadArchives
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ./gradlew helloWorld ¥ --refresh-dependencies
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . Assemble
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) .
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) .
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved.
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. ( )
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ( ) ./gradlew install
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ( ) ./gradlew helloWorld
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ) Maven ( (
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ) ( Assemble )
  • 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. . ( ) . ( )
  • 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. ( )
  • 19. Copyright © DeNA Co.,Ltd. All Rights Reserved.
  • 20. Copyright © DeNA Co.,Ltd. All Rights Reserved.
  • 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. dependencies { testImplementation gradleTestKit() }
  • 22. Copyright © DeNA Co.,Ltd. All Rights Reserved.
  • 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. G I # : .2 / - - - - - - 1 .8- 0: . / 8:0 - ::/ /:0 2./ / 2 1 / 2 - 1 2 /- 28
  • 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .build() then: result.output.contains(‘Hello world!’) result.task(“:helloWorld”).outcome == SUCCESS ) / ( (
  • 25. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .build() then: result.output.contains(‘Hello world!’) result.task(“:helloWorld”).outcome == SUCCESS ) / ( ( .
  • 26. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .build() then: result.output.contains(‘Hello world!’) result.task(“:helloWorld”).outcome == SUCCESS ) / ( ( ./gradlew helloWorld
  • 27. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .build() then: result.output.contains(‘Hello world!’) result.task(“:helloWorld”).outcome == SUCCESS ) / ( (
  • 28. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .build() then: result.output.contains(‘Hello world!’) result.task(“:helloWorld”).outcome == SUCCESS ) / ( (
  • 29. Copyright © DeNA Co.,Ltd. All Rights Reserved. ./gradlew test
  • 30. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .withGradleVersion(version) .build() where: version | _ “4.1” | _ “3.3” | _ ... “2.13” | _
  • 31. Copyright © DeNA Co.,Ltd. All Rights Reserved. . - 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 3 /43 A
  • 32. Copyright © DeNA Co.,Ltd. All Rights Reserved. . - 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 6 4 /2 3 / 153 / 4 4 /2 3 / 153 2/3 / /2 3 /3 3 /43 A C ON M G D
  • 33. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”, “--no-daemon”) .withGradleVersion(version) .build() . -
  • 34. Copyright © DeNA Co.,Ltd. All Rights Reserved. when: def result = GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(“helloWorld”) .withGradleVersion(version) .withDebug(true) .build()
  • 35. Copyright © DeNA Co.,Ltd. All Rights Reserved. ( ) Java (Gradle Daemon) D
  • 36. Copyright © DeNA Co.,Ltd. All Rights Reserved. ( ) ( ) . n 33 R . - 1 - 3 - / / . 21 / 2 / /1/ : #
  • 37. Copyright © DeNA Co.,Ltd. All Rights Reserved. n . ) ( A D E
  • 38. Copyright © DeNA Co.,Ltd. All Rights Reserved. n S KS R G D n ( T G n ( ( n . )