我一直在用Xcode 7.3编写UI测试,最近我想添加一个启动参数,以便在应用程序中启用一些测试代码。我最初尝试设置XCUIApplication().launchArguments,就像几个人在不同的帖子中所做的那样,但是他们无法工作。
仔细研究一下,launchArguments和launchEnvironment似乎都不能在UI测试中设置,尽管API文档说它们可以。
此外,当我试图在UI测试方案中设置启动参数和环境变量时,它们也不会传递到应用程序,就像在单元测试或运行应用程序时一样。
这是一个快速测试的副本,为了证明这一点,所有这些测试都失败了。
import XCTest
class LaunchDebugUITests: XCTestCase {
func testLaunchArgumentsSetting() {
XCUIApplication().launchArguments = ["abc"]
print("Arguments \(XCUIApplication().launchArguments)")
XCTAssertTrue(XCUIApplication().launchArguments.contains("abc"))
}
func testLaunchArgumentsAppending() {
XCUIApplication().launchArguments.append("abc")
print("Arguments \(XCUIApplication().launchArguments)")
XCTAssertTrue(XCUIApplication().launchArguments.contains("abc"))
}
func testLaunchEnvironmentSetting() {
XCUIApplication().launchEnvironment = ["abc":"def"]
print("Environment \(XCUIApplication().launchEnvironment)")
XCTAssertEqual("def", XCUIApplication().launchEnvironment["abc"])
}
func testLaunchEnvironmentAppending() {
XCUIApplication().launchEnvironment["abc"] = "def"
print("Environment \(XCUIApplication().launchEnvironment)")
XCTAssertEqual("def", XCUIApplication().launchEnvironment["abc"])
}
} 还有其他人遇到过这个吗?你周围有工作吗?
发布于 2016-04-14 07:42:12
苹果回复我,告诉我我使用XCUIApplication()不正确。
您不应该多次调用 XCUIApplication() 。
我读过的许多博客都多次打过这个电话,而且在大多数情况下都不重要。事实上,许多博客文章都把这个功能当作是访问一个单独的人。我有一种感觉,这是不正确的,因为它看起来不对,但我认为其他人会得到正确的。
但事实并非如此,它不是访问单个实例,而是在每次调用时实际创建一个新的XCUIApplication实例。因此我的代码失败了,因为我在一个实例上设置了启动参数,然后创建了另一个要启动的实例。
所以我的测试应该是这样的:
func testLaunchArgumentsSetting() {
let app = XCUIApplication()
app.launchArguments = ["abc"]
print("Arguments \(app.launchArguments)")
XCTAssertTrue(app.launchArguments.contains("abc"))
app.launch()
}https://stackoverflow.com/questions/36566774
复制相似问题