This document is a brief summary of the contents announced at WWDC 2017.
What's New inTesting!!!
View Slide
ࣗݾհ
ࣗݾհۄ৴ޛiOS Engineer!͖ͳframeworkHomeKitͱXCTestͰ͢झຯ"ిࢠ࡞⚡ےτϨ$ΨδΣοτ%
Enhancements
xcodebuild• CoreSimulator• Prallel testing
͜Ε·ͰͷγϛϡϨʔλଟॏىಈXcode8.3·ͰSimulator.appͰͷىಈͰଟॏىಈΛαϙʔτ͍ͯ͠ͳ͔ͬͨɻFBSimulatorControllͳͲΛ͍CoreSimulatorΛىಈͤ͞Δํ๏͕͕͋ͬͨɺެࣜʹͦΕΛαϙʔτͨ͠ܗɻFBSimulatorControlhttps://github.com/facebook/FBSimulatorControl
FBSimulatorControl
ͦͷଞͷଟॏγϛϡϨʔλଟॏىಈϥΠϒϥϦFBSimulatorControlΑΓ࠶࣮ߦͳͲػೳ͕ଟ͍ͷͰXcode9Ҏ߱ΘΕͦ͏bluepillhttps://github.com/linkedin/bluepill
ؓٳ
Localizationςετ࣌ͷLanguage/Localࢦఆ͕ՄೳʹͳΓ·ͨ͠ɻ
Xcode ServerXcodeʹXcode Serverͷػೳ͕͖ͭ·ͨ͠ɻ
Block-based test teardown
Async Testingඇಉظͷ୯ମͱςετʹ͍ͭͯ͜Ε·ͰXCTExpectationΛ͍ͬͯ·ͨ͠ɻ
Limitations• λΠϜΞτͷ߹ඞࣦͣഊͱͯ͠ѻΘΕͯ͠·͍·͢ɻ• ΣΠτॲཧ͕ඞཁͱͳΔ• ΤϥʔͷݪҼ͕ಛఆͮ͠Β͍• ωετͨ͠ΤΠτॲཧ͕ग़དྷͳ͍
XCTWaiter• XCTWaiterͱͯ͠ΣΠτॲཧʹؔ͢Δ෦͕XCTestCase͔Β͠·ͨ͠ɻ• ରͱͳΔexpectationΛ໌ࣔతʹෳͰ͖ΔΑ͏ʹͳΓ·ͨ͠ɻ• XCTWaiterʹ߹ΘͤͯDelegateΫϥεఆٛ͞Ε·ͨ͠• Returns XCTWaiter.Result
XCTWaiter
XCTWaiter.ResultXCWaiter.Result͕ఆٛ͞Εɺ࣮ߦ݁Ռͱͯ͠ҎԼͷΑ͏ͳͷ͕ఆٛ͞Ε͍ͯ·͢ɻ• completed• timedOut• incorrectOrder• invertedFulfillment• interrupted
XCTTestExpectationXCTWaiterʹ߹ΘͤͯXCTTestExpectation֦ு͞Ε·ͨ͠ɻ(Xcode8.3ͰՃ)• ΠχγϟϥΠβ͕͖ͭ·ͨ͠• expectationDescriptionͰDescriptionͷมߋ͕ग़དྷΔΑ͏ʹͳΓ·ͨ͠ɻ• expectedFulfillmentCountͷઃఆʹΑͬͯɺfulfill()ͷճʹΑΔࢦఆ͕ग़དྷΔΑ͏ʹͳΓ·ͨ͠ɻͭ·Γ
XCTTestExpectation• isInvertedϓϩύςΟʹΑͬͯςετͷޭ/ࣦഊΛٯసͤ͞Δ͜ͱ͕ग़དྷ·͢ɻ͜ΕͰλΠϜΞτͰޭͱ͢Δ͜ͱ͕Ͱ͖·͢Ͷɻ• wait(for:timeout:enforceOrder:)ͷΑ͏ʹexpectationͷྃॱΛࢦఆ͢Δ͜ͱ͕Ͱ͖·͢
XCTWaiterDelegate• nestedWaiter(_:wasInterruptedByTimedOutWaiter:)• waiter(_:didTimeoutWithUnfulfilledExpectations:)• waiter(_:didFulfillInvertedExpectation:)•waiter(_:fulfillmentDidViolateOrderingConstraintsFor:requiredExpectation:)
Multi-app Testing
Multi-app TestingUI Testing͜Ε·Ͱ1ͭͷΞϓϦέʔγϣϯʹରͯ͠ߦ͏ͷͰͨ͠ɺ͔͠͠Xcode9͔ΒىಈରͷΞϓϦΛࢦఆ͢ΔࣄͰෳΞϓϦͷىಈ͕UI TestingͰߦ͑ΔΑ͏ʹͳΓ·ͨ͠ɻ
XCUIApplication• New initializer• init(bundleIdentifier: String)ͰରΞϓϦͷBundleIDΛࢦఆ• init(url: URL)Ճ͞Ε·͕ͨ͠MacOSͷΈͳͷͰઆ໌লུ(ௐͯͳ͍)
XCUIApplication• Activate• ΞϓϦlaunch()Ͱىಈ͠·͕͢ɺෳΞϓϦΛίϯτϩʔϧ͢Δࡍɺactivate()Λ͏͜ͱʹΑͬͯΞϓϦͷΓସ͑Λߦ͍·͢ɻ• State property• ෳͷΞϓϦΛΓସ͑ͨΓ͢Δ͜ͱΛఆ͢Δʹ͋ͨΓɺΞϓϦͷঢ়ଶΛఆٛͨ͠ϓϩύςΟ͕Ճ͞Ε·ͨ͠
XCUIApplication
UI Testing performance
FirstMatch APIfirstMatchΛ͏͜ͱͰͰUIElementͷݕࡧʹஔ͍ͯ࠷ॳʹݟ͚ͭͨ࣌ͰݕࡧΛൈ͚Δࣄ͕ग़དྷΔΑ͏ʹͳΓ·ͨ͠ɻ
FirstMatch APIવͰ͕͢ɺۃྗཁૉΛߜΔ݅ࡉ͔͍ํ͕ྑ͍Ͱ͢ɻ
Activities, attachments, andscreenshots
ActivitiesςετͷखॱΛϒϩοΫͰแΜͰ໊લΛ͚ͭΔ͜ͱ͕ग़དྷΔΑ͏ʹͳΓ·ͨ͠ɻ
͜Ε·Ͱͷςετ
͜Ε͔Βͷςετ
࣮ߦϩά͔Βݟͨҧ͍ࡉ͔ͳखॱͰͳ͘γφϦΦͱͯ͠Θ͔Γ͍͢ܗʹ
Attachmentςετ࣌ʹՃͷϩάΠϝʔδͳͲΛ͢͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·ͨ͠ɻ
Screenshots͜Ε·ͰͷࣗಈεΫϦʔϯγϣοτͰͳ͘ɺదͳλΠϛϯάͰεΫϦʔϯγϣοτΛࡱΕΔΑ͏ʹͳΓ·ͨ͠ɻ
Screenshots
Attachment Lifetime PoliciesεΫϦʔϯγϣοτΞλονϝϯτςετྃ࣌ʹআ͢ΔͳͲͷઃఆՄೳʹͳΓ·͢ɻ
https://developer.apple.com/videos/play/wwdc2017/409/
Ҏ্