如何使用xcodebuild与-only-testing和-skip-testing标志?

Zig*_*ong 14 xcode xcodebuild

我注意到在xcodebuildman的页面中有两个选项.

-only-testing:TEST-IDENTIFIER       
Run Code Online (Sandbox Code Playgroud)

通过指定包含和排除其他测试的测试来约束测试

-skip-testing:TEST-IDENTIFIER       
Run Code Online (Sandbox Code Playgroud)

通过指定要排除的测试来约束测试,但包括其他测试

我尝试了什么:

xcodebuild -workspace MyWorkSpace.xcworkspace / 
-sdk iphonesimulator / 
-destination id=7F52F302-C6AF-4215-B269-39A6F9913D5B / 
-scheme SCHEME-iOS / 
test -only-testing:???
Run Code Online (Sandbox Code Playgroud)

什么TEST-IDENTIFIER意思?

Fan*_*Lin 17

就像Marcio所说的那样,这是一条像弦一样的道路.

例如,假设您有一个名为MyScheme的方案,一个测试目标,一个MyUITests测试类LoginTest,然后测试方法testUserLogin,只运行该方法,您可以运行

xcodebuild -workspace Envoy.xcworkspace \
    -scheme MyScheme \
    -sdk iphonesimulator \
    -destination 'platform=iOS Simulator,name=iPad Air 2,OS=10.1'
    '-only-testing:MyUITests/LoginTest/testUserLogin' test
Run Code Online (Sandbox Code Playgroud)

同样,如果您想在LoginTest下运行所有​​测试,请运行此处

xcodebuild -workspace Envoy.xcworkspace \
    -scheme MyScheme \
    -sdk iphonesimulator \
    -destination 'platform=iOS Simulator,name=iPad Air 2,OS=10.1'
    '-only-testing:MyUITests/LoginTest' test
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚更新了这个答案,部分错误导致我浪费了大约30分钟.在`-only-testing`参数中,您指定目标而不是方案. (3认同)

N.K*_*.K. 7

您可以查看视频https://developer.apple.com/videos/play/wwdc2016/409/

我用它是这样的:

- 只测试:UITests/TC_TextArea/TEST1

对于我的测试.工作良好

完整命令如下所示:

command = 'xcodebuild test 
-workspace ' + pathToProjectWorkspaceFolder + '/project.xcworkspace 
-scheme yourApp.app 
-destination "platform=iOS,name=' + deviceName + '" 
-only-testing:UITests/TC_TextArea/test1'
Run Code Online (Sandbox Code Playgroud)

  • TEST-IDENTIFIER是Xcode如何映射您的测试.检查您的测试树 - 左侧的第5个选项卡.为了工作,你总是必须从根开始,即`xcodebuild测试跳过测试:MyTestsBundleName/MyClassName/MyTestCaseName` (3认同)

Vla*_*lad 6

如果您需要包含多个测试:

xcodebuild -project Some.xcodeproj \
-scheme AllTests -only-testing:PersistenceTests -only-testing:FoundationTests test
Run Code Online (Sandbox Code Playgroud)

文档:

xcodebuild 命令可以组合多个约束选项,但 -only-testing: 优先于 -skip-testing:。