Jon*_*hen 3 xcode ios xcode-ui-testing
我正在尝试通过命令行将值传递给我的 XCUITest。我知道可以通过以下方式为 XCTest(非 UI)执行此操作:
xcodebuild -verbose test -workspace MyWorkspace.xcworkspace -衍生数据路径衍生数据 -scheme "MyScheme" -configuration Debug SYMROOT="$(pwd)"/build -destination platform="iOS Simulator",name="iPad Air",OS=10.2 -仅测试:UITests/UITests -resultBundlePath 日志文件 MY_SETTING="setting_value" MY_OTHER_SETTING="setting_value_2"
然而,这似乎在我的 XCUITest 中不起作用,因为代码没有进入 #ifdef MY_SETTING 块。是否有另一种方法可以通过命令行将值传递给我的 XCUITest,或者这是不可能的?
感谢您在下面的回答,我找到了这个最终对我有用的答案。Applitools的伟大人士为我阐明了这个问题,详细步骤如下:
\n\n\n\n\n最重要的一步是让 Xcode 了解我们将从命令行传递的变量。
\n\n我们将变量命名为 TEST_VAR。为此,请按照下列步骤操作:
\n\n1) 打开Xcode,选择TEST TARGET(不是应用程序的目标)\n https://www.evernote.com/l/AR0BF8Te8_hFGYON8jKqIkv3grnwFky16tc
\n\n2) 选择 \xe2\x80\x9cBuild Settings\xe2\x80\x9d 并添加到 \xe2\x80\x9cPreprocessor Macros\xe2\x80\x9d\n 部分 TEST_VAR=$(TEST_VAR)
\n\nhttps://www.evernote.com/l/AR1b4QRysBlDRro3sbKH1hSy6s_2s_Qkxnw
\n\n3) 通过点击 \xe2\x80\x9c+\xe2\x80\x9d 按钮并选择\n \xe2\x80\x9c添加用户定义设置\xe2\x80\x9d\n https://www添加新的用户定义设置 .evernote.com/l/AR0qflFqN2lIEoKVVzUUYRARM49Qb1d2TUE
\n\n4) 为新的自定义设置设置默认值\n https://www.evernote.com/l/AR32JBfPDhFIN76ZlJjq1eV7v8bry9WImfE
\n\n现在变量 TEST_VAR 可以使用了。
\n\n这是我如何通过测试的示例。我的测试项目位于工作空间内。因此,我打开终端并转到工作区的目标文件夹。
\n\nxcodebuild -workspaceworkspace_name\\workspace.xcworkspace/ -scheme\n YourSchemeName -sdk iphonesimulator -destination \'platform=iOS\n Simulator,name=iPhone 6,OS=10.2\'\n -only-testing:TestTargetName/TestCaseName/测试名称 TEST_VAR=1988 测试
\n\n在测试中,我可以以某种方式获取 TEST_VAR 变量的值,如下所示: NSLog(@"TEST_VAR %li", (long)TEST_VAR);
\n
但是,我还需要定义另一个预处理器宏来解包我传入的值的字符串值,如下所述:访问预处理器宏定义的值。
\n\n因此,为了检索字符串值,我做了如下操作:
\n\nNSLog(@"TEST_VAR %s", MACRO_VALUE(TEST_VAR))\nRun Code Online (Sandbox Code Playgroud)\n
如果您需要将环境变量从模式传递到 XCUITes,请在每个测试类上修改 XCTestCase -> app.launchEnvironment 对象:
雨燕3
override func setUp(){
app.launchEnvironment = ProcessInfo.processInfo.environment
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7450 次 |
| 最近记录: |