当前位置: 首页 > 图灵资讯 > 技术篇> 用基类编写干XCUITest测试

用基类编写干XCUITest测试

来源:图灵教育
时间:2023-05-31 09:10:00

当我们设置XCUITest框架时,我们使用Xcode XCUITest建立并运行了一个示例。Apple的XCUITest框架使我们能够记录基本的用户行程,从而开始使用XCUITest,但记录的测试不具有可伸缩性和可重用性。我们必须努力提高XCUITest的可读性、可伸缩性、可维护性和可重用性。

根据上一篇文章中提到的方法,我们可以添加更多的UI测试,但会有大量的代码重复,这将使我们的UI测试难以维护和修复。编写自动化测试非常容易,但随着项目规模和复杂性的增加,编写可靠的测试更加困难。可用于使测试具有可伸缩性的测试方法和模式。在本文中,我们将介绍如何通过抽象基类中常见的SWIFT代码使XCUITest测试强大。

创建XCUITest测试的基本类别

大多数测试框架使用基本抽象测试的公共功能。简而言之,基本类别是为测试类别提供公共功能的超级类别。在我们的Xcode项目中,我们有一个UI测试类别。101UITestXCUITest.swift在一个类别中使用所有的方法,如安装、减压和测试方法。若要添加新的XCUITest测试,则必须重复每个测试类别的设置和拆卸方法。显然,这将在我们的IOS项目中创建大量的重复代码,这使得将来难以维护,并可能延长您在移动设备云上的测试执行时间。为了避免这种情况,让我们从Xcode开始->File->New->File->Swift File->Next并将该文件命名为XCUITestbase,并确保为该文件选择目标XCUITest101UITest。

这将创建一个新文件。XCUITestBase.swift在UI测试目标下,我们可以抽象通用代码。

通用测试工作流

现在我们已经为XCUITest创建了一个基本类别,我们可以考虑我们可以在基本类别中包含的常见和重复的代码。查看我们现有的测试类别,我们可以抽象以下内容:

  • 设置和测试方法
  • 的实例XCUIApplication()这可能需要在以后的测试中。

这两件事很明显,以后一定要抽象使用。然而,随着项目和测试套件的增长,未来可能需要抽象更多的一般工作流。在编写XCUITest测试时,我们的应用程序必须配置在可靠运行测试的状态下。苹果向每个测试类别提供启动参数和发射环境。从基类中添加启动参数的能力是有意义的。一个很好的例子是,当我们想用启动参数从干净状态开始每个测试时。

XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"]

这是启动参数的一个例子,但您可以传递IOS开发人员创建的任何参数或环境。我们可以在基类中配置它,也可以将基类扩展到XCTestCase班级,等级最后,我们XCUITestBase看起来像这个类,这个:

现在我们已经创建了基类,下一个任务是修改我们的测试。对于基类子类,使用超级子类的常用方法。

使用基类重构UI测试

我们可以采取以下行动来重构我们的原始原理:

  • 我们不需要记录测试,所以,首先,让我们删除它testRecorded()我们班的考试。
  • 接下来,我们可以重新命名我们的测试方法。testRefactored()使用更明智的方法。在验证欢迎消息时,让我们重新命名测试testWelcomeMessage()
  • 我们必须用超级类代替测试XCTestCaseXCUITestBase这样,我们就可以利用基类中所有的公共工作流。
  • 替换XCUIApplication()app从基类。

在完成上述步骤后,我们的测试类将如下所示:

现在我们的测试看起来好多了,更干净了。通过使用基本类别,我们将30+行的源代码减少到8行。如果使用CMD+U关键,您将看到我们的测试仍然通过,没有问题。您可以从调试区使用CMD+Shift+C(⇧⌘C)Xcode 输入键在10中。在我们的测试中,当测试在模拟器中运行时,日志如下:

最后,您可以看到测试将断言欢迎消息并通过。

自己试试

本教程的源代码可在baseclass支部在这里。您可以自己下载源代码,并在Xcode中 10中运行测试。您可以在命令行中获得以下源代码:

$ git clone https://github.com/Shashikant86/XCUITest10101010 $ cd XCUITest1010101 $ git checkout baseclass $ open XCUITest1010101.xcodeproj/

项目在Xcode 打开10中后,请按CMD+U运行XCUITest。

结语

在本文中,我们抽象了基本类别中XCUITest的通用代码,以避免重复。然而,我们的测试仍然需要大量的改进,以使我们的测试具有可伸缩性和真正的可重用性。我们将在即将到来的文章中将SWIFT的最佳测试模式应用于我们的XCUITest。请继续关注它。