SlideShare a Scribd company logo
UnitTest

XCTest
2017/01/19 iOS Test Night #2



•
• 📦
• Twitter, GitHub(@ktanaka117)
• →
ScrollingFollowView
•
•
•
•
•
•
•
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
📦

Mr.
💦
•
•
• XCTest
• 

•
•










🔰
• 

•


=
🤔

👇
• : 

(= ) 

e.g.)
• :



e.g.) RFC5322
• : 

• :



• : 

• :







•
• 

• 

20 

5 16 20 

• 

• 

( ) true 

false
• 

Swift 3.0.2

Xcode 8.2.1
import Foundation
protocol Validatable {
associatedtype Validatee
func validate(_ validatee: Validatee) -> Bool
}
import Foundation
struct NameValidator: Validatable {
typealias Validatee = String
func validate(_ validatee: String) -> Bool {
let regEx = "[A-Z]+[a-z]{1,}+s+[A-Z]+[a-z]{1,}"
let predicate = NSPredicate(format: "SELF MATCHES %@", regEx)
return predicate.evaluate(with: validatee)
}
}
import XCTest
@testable import EquivalanceTest
class NameValidatorTest: XCTestCase {
let nameValidator = NameValidator()
func testTanaka_Kenji () {
let name = "Tanaka Kenji"
XCTAssertTrue(nameValidator.validate(name))
}
func test () {
let name = "Tanaka @@@"
XCTAssertTrue(nameValidator.validate(name))
}
func test () {
let name = "Tanaka 123"
XCTAssertTrue(nameValidator.validate(name))
}
}
import XCTest
@testable import EquivalanceTest
class NameValidatorTest: XCTestCase {
let nameValidator = NameValidator()
func testTanaka_Kenji () {
let name = "Tanaka Kenji"
XCTAssertTrue(nameValidator.validate(name))
}
func test () {
let name = "Tanaka @@@"
XCTAssertTrue(nameValidator.validate(name))
}
func test () {
let name = "Tanaka 123"
XCTAssertTrue(nameValidator.validate(name))
}
}
@ 123
XCTest
Web
はじめてのUnitTest XCTestに触れて
🤔
🤔
はじめてのUnitTest XCTestに触れて
• 

• : 

:
• : 

:
• : 



• 

• 👆
はじめてのUnitTest XCTestに触れて
GitHub: ktanaka117
Twitter: @ktanaka117
Developers.IO:

More Related Content

PDF
Nestjs MasterClass Slides
PPTX
Understanding reactive programming with microsoft reactive extensions
PDF
End to end todo list app with NestJs - Angular - Redux & Redux Saga
PDF
Debugging JavaScript with Chrome
PDF
Меняем javascript с помощью javascript
PPTX
Alt.Net Presentation
PPTX
Correcting Common Async/Await Mistakes in .NET
PPTX
Correcting Common .NET Async/Await Mistakes
Nestjs MasterClass Slides
Understanding reactive programming with microsoft reactive extensions
End to end todo list app with NestJs - Angular - Redux & Redux Saga
Debugging JavaScript with Chrome
Меняем javascript с помощью javascript
Alt.Net Presentation
Correcting Common Async/Await Mistakes in .NET
Correcting Common .NET Async/Await Mistakes

What's hot (20)

TXT
PDF
Advanced Swift Generics
PDF
Python in the database
PDF
New in MongoDB 2.6
PDF
The Ring programming language version 1.5.1 book - Part 40 of 180
PDF
Tilting at Windmills with ctypes and cygwinreg
PPTX
Unit testing powershell
PDF
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
PDF
Extensions vs Services: Digging Deeper - Neil Bartlett
PDF
Modern Networking with Swish
PPTX
Mobile TechTalk - Interesting talks from NSConference 6
PDF
Mozilla とブラウザゲーム
PDF
ActorRef[Typed] by Andrzej Kopeć
PDF
NodeUkraine - Postgresql для хипстеров или почему ваш следующий проект должен...
PDF
Goの時刻に関するテスト
PDF
Async Microservices with Twitter's Finagle
PPTX
Coolblue - Behind the Scenes Continuous Integration & Deployment
PDF
The Ring programming language version 1.10 book - Part 50 of 212
PDF
Sbt for mere mortals
PDF
Spark Day 2017- Spark 의 과거, 현재, 미래
Advanced Swift Generics
Python in the database
New in MongoDB 2.6
The Ring programming language version 1.5.1 book - Part 40 of 180
Tilting at Windmills with ctypes and cygwinreg
Unit testing powershell
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
Extensions vs Services: Digging Deeper - Neil Bartlett
Modern Networking with Swish
Mobile TechTalk - Interesting talks from NSConference 6
Mozilla とブラウザゲーム
ActorRef[Typed] by Andrzej Kopeć
NodeUkraine - Postgresql для хипстеров или почему ваш следующий проект должен...
Goの時刻に関するテスト
Async Microservices with Twitter's Finagle
Coolblue - Behind the Scenes Continuous Integration & Deployment
The Ring programming language version 1.10 book - Part 50 of 212
Sbt for mere mortals
Spark Day 2017- Spark 의 과거, 현재, 미래
Ad

More from Kenji Tanaka (20)

PDF
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
PDF
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
PDF
ポストモーテムやってみた #yjbonfire
PDF
2つの同期 4つの状態 #pixiv_ios_arch
PDF
2つの同期 4つの状態 #app_mp
PDF
2つの同期 4つの状態 #roppongiswift
PDF
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
PDF
よく使うテストヘルパーの紹介 #ios_test_night
PDF
Swiftで聞いておぼえるテスト書き
PDF
設計時空のリファクタリング
PDF
WACATE 2018 Summer
PDF
テスト駆動開発入門 by Swift
PDF
An iOS Engineer challenges Web.
PDF
エンジニアのためのブログ講座Ver4
PDF
TDDやってみよ
PDF
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
PDF
節子、それViewControllerやない...、FatViewControllerや...。
PDF
iOS 11からのDeviceCheck #とは
PDF
設計に答えはないから探してみよう
PDF
iOS 11からのアプリ間ファイル共有
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
ポストモーテムやってみた #yjbonfire
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #roppongiswift
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Swiftで聞いておぼえるテスト書き
設計時空のリファクタリング
WACATE 2018 Summer
テスト駆動開発入門 by Swift
An iOS Engineer challenges Web.
エンジニアのためのブログ講座Ver4
TDDやってみよ
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
節子、それViewControllerやない...、FatViewControllerや...。
iOS 11からのDeviceCheck #とは
設計に答えはないから探してみよう
iOS 11からのアプリ間ファイル共有
Ad

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
KodekX | Application Modernization Development
PPTX
Spectroscopy.pptx food analysis technology
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Mobile App Security Testing_ A Comprehensive Guide.pdf
Encapsulation theory and applications.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Approach and Philosophy of On baking technology
Reach Out and Touch Someone: Haptics and Empathic Computing
KodekX | Application Modernization Development
Spectroscopy.pptx food analysis technology
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Big Data Technologies - Introduction.pptx
Machine learning based COVID-19 study performance prediction
Chapter 3 Spatial Domain Image Processing.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

はじめてのUnitTest XCTestに触れて