1

我对苹果在其 XCode7 Beta 中发布的新 UI 单元测试方案感到有些困惑。我认为这是一个很棒的想法,但我有几个问题。

这是我拥有的一种测试方法...

func testMetricsProperties() {
    // Used some of the metrics for testing for reference

    let app = XCUIApplication()
    app.scrollViews.descendantsMatchingType(.Unknown).containingType(.StaticText, identifier:"rim").childrenMatchingType(.Button).element.tap()
    app.textFields["_XCUI:Secure"].typeText("")
    app.typeText("\r")
    app.buttons["dash metrics"].tap()

    let element = app.descendantsMatchingType(.Unknown).containingType(.Image, identifier:"darkBackground.png").childrenMatchingType(.Unknown).element.childrenMatchingType(.Unknown).elementBoundByIndex(1).childrenMatchingType(.Unknown).element.childrenMatchingType(.Unknown).element
    let offPlanRevenue = element.childrenMatchingType(.Unknown).elementBoundByIndex(0).staticTexts["OFF PLAN REVENUE"]
    offPlanRevenue.tap()

    XCTAssert(offPlanRevenue.exists);
    XCTAssertEqual(offPlanRevenue.value as! String, "");
}

但是,在接下来的测试方法中,似乎我必须再次加载整个应用程序,

let app = XCUIApplication()
    app.scrollViews.descendantsMatchingType(.Unknown).containingType(.StaticText, identifier:"im").childrenMatchingType(.Button).element.tap()
    app.textFields["_XCUI:Secure"].typeText("")
    app.typeText("\r")
    app.buttons["dash metrics"].tap()
}

无论如何我可以避免这种情况吗?如果我尝试对整个套件进行完整测试,这可能会很麻烦。

4

1 回答 1

0

我相信您正在寻找的是使用setUp()andtearDown()方法。 setUp()在每个测试方法之前调用,并tearDown()在类的每个测试方法之后调用。

override func setUp() {
    super.setUp()
      // Put setup code here. This method is called before the invocation of each test method in the class.
  }

  override func tearDown() {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    super.tearDown()
  }

使用这些在测试方法之间清理回到应用程序的原始状态。

于 2015-07-20T19:02:27.720 回答