Come si scrivono i test per i metodi Swift che presentano le condizioni preliminari? Ecco un esempio:Test del codice Swift con le precondizioni
func doublePositive(n:Int) -> Int {
precondition(n >= 0)
return 2*n
}
Utilizzando XCTAssertThrowsError
non funziona:
func testDoublePositive() {
XCTAssertEqual(10, testObject.doublePositive(5)) // Works
XCTAssertThrowsError(testObject.doublePositive(-1)) // Breaks
}
Questo genera un errore durante l'esecuzione del test:
filettatura 1: EXEC_BAD_INSTRUCTION (Codice = EXCI386_INVOP, Subcode = 0x0)
C'è un modo per testare i precondi di Swift?
non c'è un modo standard per "catturare" il fallimento in precondizione, si fermerà sempre il programma, tuttavia ci sono alcune modifiche, date un'occhiata a http://www.cocoawithlove.com/blog/2016/02/02 /partial-functions-part-two-catching-precondition-failures.html – ogres
@ogres Wow, questo è un bell'articolo, grazie! – dasblinkenlight
Non vedo l'ora di vederlo nel codice non test. Sono contento che questo ti permetta di testare ciò che stai cercando di testare, ma odio quel sito web ... perché garantisco che c'è qualcuno che lo implementa nel loro target principale e thread interrotti orfani solo per evitare che l'app si arresti in modo anomalo ... (E lo dico, perché l'ho visto accadere per il loro simile articolo Objective-C ...) – nhgrif