Swift 용 단위 테스트 (Unit Test)를 만드는 방법

16480 단어 SwiftXCTest테스트

소개



Mac 환경의 기사입니다만, Windows 환경도 같은 순서가 됩니다. 환경 의존 부분을 읽어보십시오.

목적



이 기사를 끝까지 읽으면 다음을 할 수 있습니다.
  • 테스트 환경 준비
  • 단위 테스트(Unit Test) 만들기
  • テストターケッド
    ViewController.swift
    import UIKit
    
    class ViewController: UIViewController {
    
        var subClass: SubClass!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            self.subClass = SubClass(viewController: self)
        }
    
        class SubClass {
            private let viewController: ViewController
    
            init(viewController: ViewController) {
                self.viewController = viewController
            }
    
            func multiply(num1: Int, num2: Int) -> Int {
                return num1 * num2
            }
        }
    
    }
    
    テストコード
    swift_UnitTestTests.swift
    import XCTest
    @testable import swift_UnitTest
    
    class swift_UnitTestTests: XCTestCase {
    
        var viewController: ViewController!
    
        override func setUp() {
            // Put setup code here. This method is called before the invocation of each test method in the class.
            super.setUp()
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            self.viewController = storyboard.instantiateInitialViewController() as? ViewController
        }
    
        override func tearDown() {
            // Put teardown code here. This method is called after the invocation of each test method in the class.
            super.tearDown()
        }
    
        func testExample() {
            // This is an example of a functional test case.
            // Use XCTAssert and related functions to verify your tests produce the correct results.
            viewController.loadViewIfNeeded()
            let subClass = viewController.subClass
            let result = subClass?.multiply(num1: 7, num2: 28)
            XCTAssertEqual(result, 196)
        }
    
        func testPerformanceExample() {
            // This is an example of a performance test case.
            self.measure {
                // Put the code you want to measure the time of here.
            }
        }
    
    }
    
    テスト結果


    관련 기사


  • XCTest
  • XCTestCase

  • 실행 환경




    환경
    Ver.


    macOS Mojave
    10.14.6

    Xcode
    10.3


    소스 코드



    실제로 구현 내용이나 소스 코드를 쫓으면서 읽으면 더 이해가 깊어질까 생각합니다. 부디 활용해 주세요.

    GitHub

    테스트 시나리오


  • ViewController에 곱셈의 결과를 돌려주는 메소드를 작성합니다.
  • 곱셈 결과가 정상인지 단위 테스트에서 확인

  • 곱셈 메서드 구현



    ViewController.swift
    import UIKit
    
    class ViewController: UIViewController {
    
        var subClass: SubClass!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            self.subClass = SubClass(viewController: self)
        }
    
        class SubClass {
            private let viewController: ViewController
    
            init(viewController: ViewController) {
                self.viewController = viewController
            }
    
            func multiply(num1: Int, num2: Int) -> Int {
                return num1 * num2
            }
        }
    
    }
    

    테스트 환경 준비



    파일 구성은 다음과 같습니다.



    Unit Tests를 미리 준비하는 경우



    프로젝트를 생성할 때 Include Unit Tests를 체크하여 생성



    Unit Tests를 나중에 준비하는 경우



    File > New > Target...을 클릭합니다.

    Test 섹션에서 iOS Unit Testing Bundle을 선택하고 Next를 클릭하십시오.



    정보를 입력하고 Finish를 클릭합니다.



    테스트 케이스 만들기



    swift_UnitTestTests.swift
    import XCTest
    @testable import swift_UnitTest
    
    class swift_UnitTestTests: XCTestCase {
    
        var viewController: ViewController!
    
        override func setUp() {
            // Put setup code here. This method is called before the invocation of each test method in the class.
            super.setUp()
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            self.viewController = storyboard.instantiateInitialViewController() as? ViewController
        }
    
        override func tearDown() {
            // Put teardown code here. This method is called after the invocation of each test method in the class.
            super.tearDown()
        }
    
        func testExample() {
            // This is an example of a functional test case.
            // Use XCTAssert and related functions to verify your tests produce the correct results.
            viewController.loadViewIfNeeded()
            let subClass = viewController.subClass
            let result = subClass?.multiply(num1: 7, num2: 28)
            XCTAssertEqual(result, 196)
        }
    
        func testPerformanceExample() {
            // This is an example of a performance test case.
            self.measure {
                // Put the code you want to measure the time of here.
            }
        }
    
    }
    

    테스트 실시



    단독으로 테스트를 실시하는 경우



    행 번호의 재생 버튼을 클릭합니다.



    전체적으로 테스트를 실시하는 경우



    Product > Test를 클릭하십시오

    조심하는 포인트



    CocoaPods로 패키지를 설치하는 경우 테스트 환경에서 패키지를 로드할 수 없어 오류가 발생합니다.

    Podfile의 Target에 테스트 환경 추가 및 업데이트

    예) 패키지(Kanna)를 설치한 경우

    Podfile.rb
    # Uncomment the next line to define a global platform for your project
    platform :ios, '12.0'
    
    target 'swift_UnitTest' do
      # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
      use_frameworks!
      # Pods for swift_UnitTest
      pod 'Kanna', '4.0.3'
    end
    
    target 'swift_UnitTestTests' do
      inherit! :search_paths
      # Pods for testing
      pod 'Kanna', '4.0.3'
    end
    

    Command.sh
    pod update
    

    좋은 웹페이지 즐겨찾기