Des Testing unitaires en Swift avec Xcode
最终测试标准考试和天体测试考试。
Nous allons维护者nous attarder sur la classegénéréeafin de vous expliquer la base。
导入XCTest
类AstronauteTests:XCTestCase {
覆盖func setUp(){
super.setUp()
}
覆盖func tearDown(){
super.tearDown()
}
func testExample(){
}
func testPerformanceExample(){
自我衡量{
}
}
}
总理选择了重要的XCTest。 Comme vous vous en doutez,高级框架XCTest。
随员的套房:
- setUp() 。 Cétéméthodeestappeléeavant chaque invocation de chaqueméthodede testécritdans la classe。 将字体倒入测试字体,并替换字体;
- tearDown() 。 测试的最佳方法之一是等级考试;
- testExample() 。 Méthode可实现Xcode。 最重要的是考级考试的标准考级考试的基本成绩;
- testPerformanceExample() 。 Méthode可实现Xcode。 测试Xcode的性能,Dans Celle-ci的性能。 性能测试者代码性能保证者算法算法以及重要的知识,包括需求的个性化,特定的静态性能以及临时的性能。
导入XCTest
@testable导入tuto_xctest
类AstronauteTests:XCTestCase {
func testInitAstronaute(){
let astronaute = Astronaute(姓名:“ Pepito”,等级:“ Amiral”,性别:“ Male”)
XCTAssertEqual(“ Pepito”,astronaute.name)
XCTAssertEqual(“ Amiral”,astronaute.grade)
XCTAssertEqual(“ Male”,astronaute.sex)
}
}
Rien ne vous choque? 不能通过@testable导入{nomDeMonProjet}。
En efet,surqueque Classe de test ques vous allezcréer,Vous devrez ajouter ceci afin d’autoriser l’accèsau AppDelegate证书在澳大利亚法律和集体诉讼中的应用。 代理人,可测试的个人资料,请查阅国际私法和非专业法令。
Nous allonscréernotrepremièreméthodede test。 倒入法式结构的测试仪,天文学家初始化了《二等兵》。 C’est pourquoi,nous allonscréerlaméthodetestInitAstronaute(由法国国家测试机构和法国国家测试机构共同鉴定)。
Dans cetteméthode,首字母缩写为astrosute astronaute la structure的宇航员名称为Astronaute avec lesparamètres。
将测试仪倒入结构,这不是一个简单的方法。
Nous allons utiliser和第四个框架XCTest。 XCTAssertEqual (断言保持正义和豪气的观念)质疑论点。
- expression1 :类型为scalaire C的Une表达式;
- expression2 :类型标尺C的Une表达式;
- …:描述为“可选”。 Cette描述字符串。
Céstméthodegénèreunécheclorsque expression1!= expression2。
Bon在écrit巴黎圣母院上对l’exécute发表评论?
Il ya 3解决方案:
- Vous lancez通过CMD + U进行测试;
- Vous passez votre curseur sur lecarrévideàcôtédu nom de la classe et celui-ci se transforme en bouton play。 等级考试(参见截图ci-dessous);
- Mêmeprocédureque解决方案2 mes seulement sur laméthodeque vous souhaitez测试仪。
倒入finir notre测试,nous allons rajouter laméthode测试InitAstronuateWithPlanet qui va测试仪(星际大战init)进行天体初始化测试。
func testInitAstronuateWithPlanet(){
let astronaute = Astronaute(名称:“天行者”,等级:“杰迪”,性别:“男”,星球:“塔图因”)
XCTAssertEqual(“ Tatooine”,astronaute.planet)
}
正常结构的一切可能。 Mais评论enêtresûr?
解决方案:文件覆盖率。 信息源代码测试计划。 评论faire sous Xcode吗?
Cliquez sur l’icone(请参见截图ci-dessous)和cliquez sur“ Edit Schema”
Allez dans l’onglet Test et cochez la案例“收集覆盖率数据”(请参见ci-dessous的屏幕截图)
信息保护与处理小组,信息与事件处理小组,信息与事件处理小组,法语和英语小组主要负责人代码覆盖范围。 N’oubliez pas de cocher dans cette partie la复选框“ Show Test Bundles”
测试ViewController
维修条件正常的常态维护者。 示例代码(rien detrèscompliqué)。
导入UIKit
类ViewController:UIViewController {
@IBOutlet弱var uiText:UILabel!
覆盖func viewDidLoad(){
super.viewDidLoad()
}
func changeLabel(分数:Int){
如果(得分> 0){
self.uiText.text =“加格纳”
返回;
}
self.uiText.text =“ Perdu”
}
}
Nous allons voir endétails合奏评论测试员ceci:
导入XCTest
@testable导入tuto_xctest
类ViewControllerTests:XCTestCase {
var controller:ViewController!
覆盖func setUp(){
super.setUp()
让Storyboard = UIStoryboard(名称:“ Main”,包:Bundle.main)
控制器= storyboard.instantiateInitialViewController()为! ViewController
}
覆盖func tearDown(){
super.tearDown()
控制器=无
}
func testScoreIsWinChangeLabel(){
让_ = controller.view
controller.changeLabel(分数:1)
XCTAssertEqual(“ Gagner”,controller.uiText.text)
}
func testScoreIsLooseChangeLabel(){
让_ = controller.view
controller.changeLabel(得分:0)
XCTAssertEqual(“ Perdu”,controller.uiText.text)
}
}
Nous devons可以创建ViewController类型的变量,也可以在Celle-ci中进行测试。
- setUp() :(测试方法调用前的适当时间)
- Nouscréonsund constante故事板qui varecupérerle故事板Main(qui est pardéfautvotre故事板);
- 实例的初始实例中,事件示例将实例化InitialViewController。
- tearDown() :(测试方法调用的时间)。 Nous mettonsànil notre controller pour plus desécurité。
- testScoreIsWinChangeLabel() :
- uiText de notre控制器的文本输入法。 无人教ep
let _= controller.view
vous allez relever er erreur car le seraégalànil。
评论est-ce可能吗? Quand nous avonscréénotre标签dans notre storyboard,celui-ci s’instancie uni fois que la vue estchargée。 Mais dans Notre classe unitaire,méthodeloadView ()在 Jamaisdéclenchée中。
Le label n’est donc pascrééet il estégalànil。 解决方案中的所有问题均由控制器负责 。loadView ()可能导致内存泄漏,导致内存泄漏问题严重,并导致新的问题。
替代性的使用人利益观控制人quidéclenchera吹捧着各种方法的要求。
注意:请在下划线(_)上使用常量,但是在常量后必须重新命名。 Céladit au qu’onprétendavoir l’accèsàla vue et qu’ondéclenche的合唱团颂扬了方法 - 商标法和商标权法的适用范围
结论
J’espèreque cet的文章与试验单位的公平竞争有关。 J’insiste sur le fait que faire测试最重要的汽车:
- 投票权法典;
- 加上更改编码的费用;
- 长期任职。