Xcode:为什么我的启动参数在记录 UI 测试时不起作用?

Xcode: Why won't my launch arguments work while recording UI tests?

因为我计划在我的应用程序中设置 UI 测试,并使用启动参数来模拟一些数据,所以我在构建一个简单的测试项目时意识到了一些事情:

在应用目标中:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let uiTesting = ProcessInfo.processInfo.arguments.contains("ui-testing")
        view.backgroundColor = uiTesting ? .yellow : .white
    }
}

在UI测试目标中:

class UITestWithLaunchArgumentsProjectUITests: XCTestCase {

    override func setUp() {
        let app = XCUIApplication()
        app.launchArguments.append("ui-testing")
        app.launch()
    }


    func testExample() {
        sleep(20)
    }
}

多亏了这个,我意识到如果我 运行 testExample() 背景颜色会像预期的那样变成黄色。但是,当我使用记录 UI 测试工具时,它没有。

有谁知道为什么,以及最终如何在记录 UI 测试时使用启动参数?

感谢您的帮助。

这个答案是当你使用记录UI工具时,它不是使用testSetup而是直接运行应用程序。换句话说,你没有测试它,而是从一个普通的应用程序中提取测试信息运行。

一个简单的方法是在运行 方案中添加ui-测试。所以你可以看到你想要的黄色。