iOS按顺序运行UITesting(文件和功能级别)

时间:2016-05-11 06:39:57

标签: ios xcode-ui-testing

我已经像这样创建了UITesting。我需要按顺序运行这3个文件,我需要这样命名。我觉得这很糟糕。我想更逻辑地命名(而不是Test1等)。是否可以按顺序重命名和运行?

enter image description here

另一个是我需要按字母顺序命名我的方法。我想随机命名并按顺序运行。我该怎么办?

- (void)test2CreatePost 
- (void)test3ClickLikeInNewsfeed

3 个答案:

答案 0 :(得分:2)

您可以通过嵌套函数来实现此目的。

// Note that this function contains tests but does not follow the 'testXXX' naming convention
func login() {
    // Implement your test here
}

func newsfeed() {
    // Implement your test here
}

func moreTab() {
    // Implement your test here
}

// Here is the test method that will run the tests in a user-specified order
func testSomething() {
    login()
    newsfeed()
    moreTab()
}

答案 1 :(得分:1)

函数嵌套适用于仅立即从XCode运行UI测试。但是当测试从命令行运行时,它们按字母顺序运行。我已经读过这个问题已经针对XCode 8中的单元测试修复了,但似乎不适用于UI测试。

例如,现在我有以下UI测试层次结构:

UITests
   TestCaseB
   TestCaseA

当我从XCode 8.2.1运行它们时,它们的执行顺序与它们描述的相同,即:

TestCaseB
TestCaseA

但是当我使用xcodebuild test TEST_TARGET_NAME=<TargetName> -scheme <UITestsSchemeName> destination 'platform=iOS Simulator,name=iPhone 7'从命令行运行它们时,它们以另一个顺序运行:

TestCaseA
TestCaseB

小心。

答案 2 :(得分:0)

您可以使用本答案中说明的步骤来实现此目的。

Running individual XCTest (UI, Unit) test cases for iOS apps from the command line

基本上你需要覆盖XCTestCase中存在的testInvocations,然后你可以控制测试用例执行的顺序。

如果您需要有关如何实现此目标的更多信息,请添加评论。