I\'ve noticed that there are two options in xcodebuild
\'s man page.
-only-testing:TEST-IDENTIFIER
constr
To test an application you need to go with the two steps:
- build the application
xcodebuild build-for-testing \
-workspace "<your_xcworkspace>" \
-scheme "<your_scheme>" \
-destination "platform=iOS Simulator,name=<your_simulator>,OS=<simdevice_os_version>" \
-derivedDataPath "All"
- test it without building
xcodebuild test-without-building \
-xctestrun "All/Build/Products/<your_scheme>_iphonesimulator<simdevice_os_version>-x86_64.xctestrun" \
-destination "platform=iOS Simulator,name=<your_simulator>,OS=<simdevice_os_version>" '-only-testing:<your_test_bundle_to_run>' \
-derivedDataPath 'build/reports/<your_test_bundle_to_run>'
Here, <your_test_bundle_to_run>
indicates the TEST-IDENTIFIER
that means
How many categories or how many test cases under a category you want to run, that should be included under a test bundle[<your_test_bundle_to_run>
]
Like what Marcio said, it's a path like string.
For example, say you have a scheme named MyScheme, a test target MyUITests
, and testing class LoginTest
, then testing method testUserLogin
, to run only the method, you can run
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
Likewise, if you want to run all tests under LoginTest, here you run
xcodebuild -workspace Envoy.xcworkspace \
-scheme MyScheme \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPad Air 2,OS=10.1'
'-only-testing:MyUITests/LoginTest' test
In case you need to include several tests:
xcodebuild -project Some.xcodeproj \
-scheme AllTests -only-testing:PersistenceTests -only-testing:FoundationTests test
Documentation:
An xcodebuild command can combine multiple constraint options, but -only-testing: has precedence over -skip-testing:.
You can check the video https://developer.apple.com/videos/play/wwdc2016/409/
I used it like this:
-only-testing:UITests/TC_TextArea/test1
for my tests tree. Works fine
Full command looks as follows:
command = 'xcodebuild test
-workspace ' + pathToProjectWorkspaceFolder + '/project.xcworkspace
-scheme yourApp.app
-destination "platform=iOS,name=' + deviceName + '"
-only-testing:UITests/TC_TextArea/test1'
xcodebuild \
-workspace MyApp.xcworkspace \
-scheme Automation \
-destination 'plaform=ios,name=My Real iPhone' \
-only-testing:MyTestDirectory/TestClass/testMethodName \
test-without-building