Session 409
๐ Advanced Testing and Continuous Integration - WWDC 2016 - Videos - Apple Developer
Unit Tests ์ ๊ฒฝ์ฐ, test bundle ์ด application์ ์ง์ ์ ์ผ๋ก load๋๋ค (application ์ Host Application์ด๋ผ๊ณ ๋ถ๋ฆ)
UI Tests ์ ๊ฒฝ์ฐ, test bundle์ด ์ฑ๊ณผ ๋ถ๋ฆฌ๋ UI test runner๋ก test bunlde์ด load ๋๋ค (application ์ Target Application)
Unit Tests
- ์ฑ์ ์๋ฃ ๊ตฌ์กฐ, API ๋ฅผ ์ง์ ์ ์ผ๋ก ์ ๊ทผ
- host application์ ๊ฐ์ ์คํ ์๋์ ์๋
- ๊ทธ๋์ test invocation ์ฌ์ด์์ clean up ํด์ฃผ์ด์ผํจ
UI Tests
- Accessibility๋ฅผ ํตํด ์ฑ์ ์ ๊ทผ, ์ฑ์ event๋ฅผ ๋ณด๋ด๊ณ , ์ธ๋ถ์์ ์ ์ ๊ฐ ์ฌ์ฉํ๋ ๊ฒ ์ฒ๋ผ ๋ด์ผํจ
- ํ ์คํธ๊ฐ terminate๋๊ณ relaunch ๋ ์ ์๋ค
XCTestObservation Protocol
protocol์ ๋ฐ๋ฅด๊ณ shared observation center์ ๋ฑ๋ก ํ๋ฉด call back์ ๋ฐ๋๋ค
override init() {
super.init()
let sharedCenter = XCTestObservationCenter.shared()
sharedCenter.addTestObserver(self)
}
// ํ
์คํธ ์์ ์ ์
optional public func testBundleWillStart(_ testBundle: AnyObject!)
// suite ์์ ์ ์
optional public func testSuiteWillStart(_ testSuite: AnyObject!)
//test case๋ฅผ run ์
optional public func testCaseWillStart(_ testCase: AnyObject!)
// test case ์ข
๋ฃ ์
optional public func testCaseDidFinish(_ testCase: AnyObject!)
// ๋ญ๊ฐ ์๋ชป ๋์ ๋
optional public func testCase(_ testCase: AnyObject!, didFailWithDescription description: AnyObject!, inFile filePath: AnyObject!, atLine lineNumber: AnyObject!)
// ํ
์คํธ ๋ง์ณค์ ๋
optional public func testSuiteDidFinish(_ testSuite: AnyObject!)
// ์์
์ ๋ ์ฒ๋ฆฌ ํ ์ ์๋ ๋ง์ง๋ง ์ฝ๋ฐฑ
optional public func testBundleDidFinish(_ testBundle: AnyObject!)
- Crash๋ ํ ์คํธ failure ๋๋ ๋น๋ฒํ ์์ธ์ด๋ค.
- test host application, target application ๋ชจ๋ crash ๊ฐ ๋ ์ ์๋ค
- Xcode๋ ๋ณดํต test suite์ ์์ฑ์ํค๊ธฐ ์ํด์ host application์ relaunch ํ ๊ฑฐ๋ค
Xcode๊ฐ test report์ crash log๋ค์ ๋ชจ์์ ์ค๊ฒ์ด์ผ
UI, Unit tests ๋ ๋ค . local , Xcode Server ๋๋ค.
์ฌ๋์ ์๋ฒฝํ์ง ์์~ ์๋ฒฝํ ์ฝ๋๋ ์์ด~ ๊ทธ๋์ Unit test๋ฅผ ํ๋๊ฑฐ์ง.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ ๋น๋ ์๋๋ ์ฝ๋๋ฅผ ์ปค๋ฐ ํ์ง~ ๊ทธ๋์ ์ด๋ฐ ๊ฒฝ์ฐ์ Xcode๋ ์ด๋ฉ์ผ์ ๋ณด๋ด ์ค๊ฑฐ์ผ ๋๊ฐ ์ฝ๋๋ฅผ brokeํ๋ค๊ณ ์๋ ค์ฃผ๋ ค๊ณ
์ด๊ฑฐ ๋ฟ๋ง ์๋๋ผ ๋๊ฐ ์๋ฒฝํ ์ฝ๋๋ฅผ ์งฐ๋ค๊ณ ํด๋, ๋์ ์ฃผ๋ณ์ ๊ฒ๋ค์ด ๋ณํ ์๊ฐ ์์ง. ์๋ฅผ ๋ค๋ฉด ์ Xcode๋ฅผ ๋ฐ์์ ๋, ์๋ก์ด SDK๋ฅผ ๋ฐ๊ณ ์๋ก์ด deprecation๋ค์ด ์์ ์ ์์ด. ์ธ์ด์ improvement๋ก ์ด์๊ฐ ์๊ธธ ์ ๋ ์์ง. ๊ทธ๋ฐ๋ฐ ๋ชจ๋ Xcode๋ ๊ทธ ์ ๊บผ ๋ณด๋ค smartํด. ๊ทธ๋์ ๊ทธ์ ์ ์๋ ์ด์๋ฅผ ๋ฐ๊ฒฌ ํ ์ ๋ ์์ด Xcode๊ฐ ์ถ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ด์ง