2016-05-03 10 views
2

次のコードを追加します。これらのユニットテストの例を見たいと思います。私はこれに非常に新しいですので、どんな助けも素晴らしいでしょう!コードを入力してください!ありがとう以下の方法をユニットテストする方法は?

//Dismiss keyboard when tapping on screen 
func tapGesture(gesture:UITapGestureRecognizer){ 

    romanNumeralTextfield.resignFirstResponder() 

} 


//When return key is tapped the keyboard is dismissed 
func textFieldShouldReturn(textField: UITextField) -> Bool { 
    romanNumeralTextfield.resignFirstResponder() 
    return true 
} 


//Display keyboard 
func keyboardWillShow(notification: NSNotification) { 

    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
     self.view.frame.origin.y -= keyboardSize.height 
    } 

} 


//Hide keyboard 
func keyboardWillHide(notification: NSNotification) { 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
     self.view.frame.origin.y += keyboardSize.height 
    } 
} 

答えて

2

これはユニットテストを書くことができるものではありません。ユニットテストはモデルクラスには適していますが、ユニットテストのビューとコントローラは定義上不可能です。多くの場合、複数の部品を接続して動作しますが、ユニットはテスト片のみをテストします。

UI testsをご覧ください。長期的には、このケースに対するUIテストの作成に費やされるエネルギーは、手でケースをテストすることによって消費される可能性のあるエネルギーよりも小さくなるでしょうか?手作業でテストするいくつかのケースを記述するテキスト・ドキュメント、たとえばリリース前のテキスト・ドキュメントを単純に記述することは失敗ではありません。 UIテストと比較して、私はそれがしばしばより効果的だと言います。

+0

ビューとビューコントローラはXCTestCases(ユニットテスト)を使用してテストすることができ、それをモックアップができます。私は単体テスト・ビュー・コントローラに非常に有益であることを発見しました。確かに、100%カバレッジに近づくことはほとんど不可能であり、おそらくそれに値するものではありませんが、コードの重要な部分をテストすることは間違いありません。 –

1

あなたは

override func setUp() { 
    super.setUp() 
} 

override func tearDown() { 
    super.tearDown() 
} 

func testTextFieldDidBeginEditingCalled() { 

    let sampleTextField = MockTextField(frame: CGRectMake(20, 100, 300, 40)) 
    sampleTextField.placeholder = "Enter text here" 
    sampleTextField.font = UIFont.systemFontOfSize(15) 
    sampleTextField.borderStyle = UITextBorderStyle.RoundedRect 
    sampleTextField.autocorrectionType = UITextAutocorrectionType.No 
    sampleTextField.keyboardType = UIKeyboardType.Default 
    sampleTextField.returnKeyType = UIReturnKeyType.Done 
    sampleTextField.clearButtonMode = UITextFieldViewMode.WhileEditing; 
    sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.Center 

    sampleTextField.textFieldDidBeginEditing(sampleTextField) 

    XCTAssertTrue(sampleTextField.completionInvoked, "should be true") 
} 

class MockTextField: UITextField, UITextFieldDelegate { 

    var completionInvoked = false 

    func textFieldDidBeginEditing(textField: UITextField) { 
     print("TextField did begin editing method called") 
     completionInvoked = true 
    } 
}