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 (断言保持正义和豪气的观念)质疑论点。

  1. expression1 类型为scalaire C的Une表达式;
  2. expression2 类型标尺C的Une表达式;
  3. …:描述为“可选”。 Cette描述字符串。

Céstméthodegénèreunécheclorsque expression1!= expression2。

Bon在écrit巴黎圣母院上对l’exécute发表评论?

Il ya 3解决方案:

  1. Vous lancez通过CMD + U进行测试;
  2. Vous passez votre curseur sur lecarrévideàcôtédu nom de la classe et celui-ci se transforme en bouton play。 等级考试(参见截图ci-dessous);
  3. 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中进行测试。

  1. setUp() :(测试方法调用前的适当时间)
  2. Nouscréonsund constante故事板qui varecupérerle故事板Main(qui est pardéfautvotre故事板);
  3. 实例的初始实例中,事件示例将实例化InitialViewController。
  4. tearDown() :(测试方法调用的时间)。 Nous mettonsànil notre controller pour plus desécurité。
  5. testScoreIsWinChangeLabel()
  6. 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的合唱团颂扬了方法
  7. 商标法和商标权法的适用范围

结论

J’espèreque cet的文章与试验单位的公平竞争有关。 J’insiste sur le fait que faire测试最重要的汽车:

  • 投票权法典;
  • 加上更改编码的费用;
  • 长期任职。