मैं अपनी इकाई और कार्यात्मक परीक्षण के साथ जाने के लिए एक्सकोड 6 में एकीकरण परीक्षण लिख रहा हूं। XCTest में एक सेटअप() विधि है जिसे प्रत्येक परीक्षण से पहले बुलाया जाता है। महान!परीक्षण चलाने से पहले सेटअप में एसिंक कॉल की प्रतीक्षा करने के लिए मैं एक्ससीटीएस्ट कैसे प्राप्त कर सकता हूं?
इसमें XCTestException भी है जो मुझे एसिंक परीक्षण लिखने देता है। भी महान!
हालांकि, मैं प्रत्येक परीक्षण से पहले परीक्षण डेटा के साथ अपने परीक्षण डेटाबेस को पॉप्युलेट करना चाहता हूं और सेटअप केवल एसिंक डेटाबेस कॉल करने से पहले परीक्षण निष्पादित करना शुरू कर देता है।
क्या सेटअप समाप्त होने से पहले मेरा डेटाबेस तैयार होने तक सेटअप प्रतीक्षा करने का कोई तरीका है?
यहां मैंने जो किया है उसका एक उदाहरण यहां दिया गया है।
func test_checkSomethingExists() {
let expectation = expectationWithDescription("")
var expected:DatabaseItem
// Fill out a database with data.
var data = getData()
overwriteDatabase(data, {
// Database populated.
// Do test... in this pseudocode I just check something...
db.retrieveDatabaseItem({ expected in
XCTAssertNotNil(expected)
expectation.fulfill()
})
})
waitForExpectationsWithTimeout(5.0) { (error) in
if error != nil {
XCTFail(error.localizedDescription)
}
}
}
यहाँ मैं चाहते हैं क्या करना है::
class MyTestCase: XCTestCase {
override func setUp() {
super.setUp()
// Fill out a database with data. I can make this call do anything, here
// it returns a block.
var data = getData()
db.overwriteDatabase(data, onDone:() ->() {
// When database done, do something that causes setUp to end
// and start running tests
})
}
func test_checkSomethingExists() {
let expectation = expectationWithDescription("")
var expected:DatabaseItem
// Do test... in this pseudocode I just check something...
db.retrieveDatabaseItem({ expected in
XCTAssertNotNil(expected)
expectation.fulfill()
})
waitForExpectationsWithTimeout(5.0) { (error) in
if error != nil {
XCTFail(error.localizedDescription)
}
}
}
}
आप के लिए अतिप्रवाह ढेर खोज करते हैं "[iOS] अतुल्यकालिक इकाई परीक्षण" आप न केवल 'XCTestExpectation' (नहीं' XCTestException') तकनीक, लेकिन यह भी सेमाफोर तकनीक के साथ जवाब में से एक टन देखेंगे। जैसे http://stackoverflow.com/a/23658385/1271826। आप शायद अपने async डेटाबेस कोड के लिए सेमफोर तकनीक का उपयोग कर सकते हैं (हालांकि आपने यह साझा नहीं किया है कि आप यह डेटाबेस सामग्री कैसे कर रहे हैं ताकि हम उससे अधिक विशिष्ट न हों)। मुझे आश्चर्य है कि आपकी डेटाबेस लाइब्रेरी में एक तुल्यकालिक सुविधा नहीं है, क्योंकि यह डेटाबेस पुस्तकालयों में बहुत आम है। – Rob
रोब, मैंने अपना प्रश्न संपादित करने के लिए संपादित किया जो मैं ढूंढ रहा हूं। मुझे पता है कि एसिंक परीक्षण लिखने के लिए XCTest और XCTestException का उपयोग कैसे करें। मुझे नहीं पता कि सेट अप होने तक परीक्षणों को कैसे चलाना है। धन्यवाद। –
लॉल। फिर, 'XCTestException' जैसी कोई चीज़ नहीं। यह 'XCTestExpectation' है। और जैसा कि मैंने कहा, 'सेटअप' में सेमफोर तकनीक का उपयोग करें, न कि 'XCTestExpectation'। (परीक्षणों में अपेक्षाओं का उपयोग करें, लेकिन 'सेटअप' में सेमफोर का उपयोग करें।) – Rob