![](/img/trans.png)
[英]can anyone give me example of call method of skscene class from sknode class
[英]Can anyone give me an example about unit testing in iOS Swift?
我是 iOS 開發新手,想學習單元測試。 我想使用文本字段添加兩個數字,並在單擊操作時在標簽中顯示結果。 誰能建議我如何為此進行單元測試?
這是一個簡短的示例,但您應該始終嘗試多種不同的變體,就好像它是文本而不是數字和負數、高於 int 的數字等......
class AddingViewController: UIViewController {
var sum = 0
let textField1 = UITextField()
let textField2 = UITextField()
let button = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: #selector(addNumbers), for: .touchUpInside)
}
@objc func addNumbers() {
guard let number1 = Int(textField1.text!), let number2 = Int(textField2.text!) else {
return
}
sum = number1 + number2
}
}
class TestAddingViewController {
let vc = AddingViewController()
func testAddNumbers() {
let number1 = 1
let number2 = 2
let sum = number1 + number2
vc.textField1.text = "\(number1)"
vc.textField2.text = "\(number2)"
vc.button.sendActions(for: .touchUpInside)
XCTAssertEqual(sum, vc.sum)
}
}
如果 viewController 來自情節提要,您可以像通常調用情節提要一樣調用它
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
文本字段+按鈕將是@outlets
,按鈕動作將是@IBAction
而不是@objc func
這是我的視圖控制器類:
import UIKit
class ViewController: UIViewController {
// MARK: ▼▼▼ IBOutlets ▼▼▼
@IBOutlet weak var lblAnswer: UILabel!
// MARK: ▼▼▼ Lifecycle methods ▼▼▼
override func viewDidLoad() {
super.viewDidLoad()
lblAnswer.text = "\(calculateSum(num1: 5, num2: 10))"
}
// MARK: ▼▼▼ Methods ▼▼▼
func calculateSum(num1: Int, num2: Int) -> Int {
return (num1 + num2)
}
}
對於單元測試類,我有:
import XCTest
@testable import Test
class TestTests: XCTestCase {
// MARK: ▼▼▼ Variables ▼▼▼
var num1: Int?
var num2: Int?
var testClass: ViewController?
// This is used to initialise your code:
override func setUp() {
testClass = ViewController()
num1 = 10
num2 = 10
}
// This runs when test is complete:
override func tearDown() {
testClass = nil
num1 = nil
num2 = nil
}
// Should begin with test so that it is recognised:
func testSumFunction() {
let sum = testClass!.calculateSum(num1: num1!, num2: num2!)
// The sum should be 20 for this to pass.
XCTAssertTrue(sum == 20)
}
}
如果函數的邏輯被改變並且 answer 不等於 20 那么這個測試將失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.