[TIL] 21.04.03.(Sat)


アクティビティの内容

  • 電卓項目Step 1 PR

  • プロジェクトを実行する際に考慮する事項

  • プロトコル(抽象単位)をどの単位で作成するか
  • ユニットテストthrowエラーの確認方法-XCTAssertThrowsError(_:_:_:)
  • ユニットテストの単位
  • 最大表示数字9桁に制限
  • エラー処理方法
  • アドバイスをもらいたい部分

  • 異常を処理する場合、エラーを投げ出すだけの方法で処理した方が良い方法はありますか?
  • 今の業界がどのように公平にプログラミングされているのか知りたいです(拡大しています).
  • 完全テスト実行時にtestExampleメソッドで各テストメソッドを呼び出す過程
  • 個々のテストの開始ごとに初期化のためのインスタンスを作成するたびに、この操作が重複しているような気がします.インスタンスを作成したいだけですが、testExampleが各テストを干渉したくない場合は、どうすればいいですか?
  • import XCTest
    @testable import Calculator
    class StackTests: XCTestCase {
        
        var stackDecimalTest = Stack<Double>()
        var stackBinaryTest = Stack<Int>()
        
        override func setUpWithError() throws {
            try super.setUpWithError()
        }
        
        override func tearDownWithError() throws {
            // Put teardown code here. This method is called after the invocation of each test method in the class.
        }
        
        func testExample() throws {
            test_stack_pop()
            test_stack_pop_error()
            test_stack_top()
            test_stack_isEmpty()
        }
        
        func test_stack_pop() {
            stackDecimalTest = Stack<Double>(list:[1, 2])
            XCTAssertEqual(try stackDecimalTest.pop(), 2)
        }
        
        func test_stack_pop_error() {
            stackDecimalTest = Stack<Double>()
            XCTAssertThrowsError(try stackDecimalTest.pop()) { (error) in
                XCTAssertEqual(error as! StackError, StackError.poppedItemIsNil)
            }
        }
        
        func test_stack_top() {
            stackDecimalTest = Stack<Double>(list:[1, 2])
            XCTAssertEqual(try stackDecimalTest.top(), 2)
        }
        
        func test_stack_isEmpty() {
            stackDecimalTest = Stack<Double>()
            XCTAssertEqual(stackDecimalTest.isEmpty, true)
        }
    }