Run Unit Tests Synchronously
Syntax
- URI: /services/data/vXX.X/tooling/runTestsSynchronous/
- HTTPS Method: POST
- Authentication: Authorization: Bearer token
- Format: JSON
Request Parameters
None.
Request Body Properties
| Name | Type | Description |
|---|---|---|
| tests | Object[] | Required. An array that contains a test object. The test object includes the Apex or
flow test class name, the Apex test class ID, and optionally methods in that class to run.
Only one test object is allowed in the array. For definitions of properties that the test object can include, see the next table. |
| maxFailedTests | String |
Optional. Specifies the maximum failed Apex tests allowed to run as an integer value from "0" to "1,000,000". If not specified, all Apex tests run regardless of the number of tests that have passed or failed. A value of "0" causes the test run to stop if any failure occurs. A value of "1" causes the test run to stop on the second failure, and so on. High values can cause slow performance. Each 1,000 tests that you add to your maxFailedTests value adds about three seconds to your test run, not including the time that the tests take to execute. maxFailedTests doesn’t support flow tests. Flow tests that fail during a test run aren’t included in the maxFailedTests count. |
| skipCodeCoverage | String |
Optional. Specifies whether to opt out of collecting code coverage information during the test run ("true") or to collect code coverage information ("false"). If not specified, the default value is "false". |
The test object in the tests array can include these properties.
| Name | Type | Description |
|---|---|---|
| className | String |
Required if classId isn’t included. The namespace prefix of the test class, followed by a period (.) and the name of the test class. For example, "customNamepacePrefix.TestClassName". For Apex tests that don’t originate from namespaced packages or orgs, omit the namespace. For example, "TestClassName". All flow tests are in the FlowTesting namespace, and the flow test class name is the API name of the flow. Therefore, for a flow test that doesn’t originate from a namespaced package or org, specify the className value as "FlowTesting.flowName". For a flow test in a namespaced package or org, specify the className value as "FlowTesting.customNamepacePrefix.flowName". |
| classId | String |
Required if className isn’t included. The Salesforce ID of the Apex test class. classId doesn’t support flow tests. |
| testMethods | String[] |
Optional. The names of methods in a test class to run. If not specified, all methods in the test class are run. For a flow test, includes the API name of the flow followed by an underscore (_) and the API name of the flow test. For example, FlowName_UpdateRecordFlowTest. Multiple occurrences of a test method name in a testMethods array are ignored. Test methods that don’t exist are skipped. |
Response Body Properties
| Name | Type | Description |
|---|---|---|
| apexLogId | String | The ID of the ApexLog object that contains information about the test run if debug logging is enabled. If debug logging disabled, the apexLogId is null. |
| codeCoverage | CodeCoverageResult[] |
If skipCodeCoverage is "true" or the test run only contains flow tests, returns an empty array. If skipCodeCoverage is "false" and the test run contains Apex tests, returns an array of CodeCoverageResult objects that contain the details of the code coverage for the specified unit tests. |
| codeCoverageWarnings | CodeCoverageWarning[] |
If skipCodeCoverage is "true" or the test run only contains flow tests, returns an empty array. If skipCodeCoverage is "false" and the test run contains Apex tests, returns an array of CodeCoverageWarning objects that contain both the total number of lines that could have been executed, as well as the number, line, and column positions of code that was not executed. |
| failures | Object[] | An array of objects that represents test methods that failed during the test run. |
| flowCoverage | FlowCoverageResult[] |
If skipCodeCoverage is "true" or the test run only contains Apex tests, returns an empty array. If skipCodeCoverage is false and the test run contains flow tests, returns an array of FlowCoverageResult objects that contain information about the flow version and the number of elements executed by the test run. |
| flowCoverageWarnings | FlowCoverageWarning[] |
If skipCodeCoverage is "true" or the test run only contains Apex tests, returns an empty array. If skipCodeCoverage is false and the test run contains flow tests, returns an array of FlowCoverageWarning objects that contain information about the flow version that generated warnings. |
| numFailures | Integer | The number of test methods that failed during the test run. |
| numTestsRun | Integer | The total number test methods that were run. |
| successes | Object[] | An array of objects that represents test methods that succeeded during the test run. |
| totaltime | Integer | The total duration of the test run in milliseconds. |
Each failures and successes array is comprised of objects that represent test methods. Each test object has these properties.
| Name | Type | Description |
|---|---|---|
| id | String | The Salesforce ID of the test method. |
| methodName | String |
The name of the test method. For a flow test, the methodName value is the API name of the flow test. |
| name | String |
The name of the test class. For a flow test, the name value is the API name of the flow. |
| namespace | String |
The namespace prefix of the test class that contains the test method. For a flow test that originates from a namespaced package or org, the namespace value is "FlowTesting.NamespacePrefix". For an Apex or flow test that doesn’t originate from a namespaced package or org, the namespace value is null. |
| seeAllData | Boolean |
Indicates whether the test method was allowed to access all record data in the org during the test run (true) or not (false). For Apex tests, the seeAllData value is set with the isTest(SeeAllData=True) annotation on the Apex test class or method. For automated flow tests, the seeAllData value is always true. |
| time | Integer | The time it took the test method to run, in milliseconds. |
The failures array can also contain these properties.
| Name | Type | Description |
|---|---|---|
| message | String | The error message that the failed test returns. |
| stackTrace | String | The location of the exception in the failed test. |
| type | String | For internal use only. Possible values are: Class |
Example
-
Example Request Body:
1{ 2 "tests": [ 3 { 4 "className": "FlowTesting.pkgNs1.UpdateAccountDescriptionFlow", 5 "testMethods": ["UpdateAccountDescriptionFlow_TestUpdateDescriptionDeleted", 6 "UpdateAccountDescriptionFlow_TestAccountDescriptionHasWords"] 7 } 8 ], 9 "maxFailedTests": "2", 10 "skipCodeCoverage": "true" 11} -
Example Response Body:
1{ 2 "apexLogId": null, 3 "codeCoverage": [], 4 "codeCoverageWarnings": [], 5 "failures": [], 6 "flowCoverage": [], 7 "flowCoverageWarnings": [], 8 "numFailures": 0, 9 "numTestsRun": 2, 10 "successes": [ 11 { 12 "id": "07Mxx00000000NuEAI", 13 "methodName": "TestUpdateDescriptionDeleted", 14 "name": "UpdateAccountDescriptionFlow", 15 "namespace": "FlowTesting.PkgNs1", 16 "seeAllData": true, 17 "time": 12 18 }, 19 { 20 "id": "07Mxx00000000NtEAI", 21 "methodName": "TestAccountDescriptionHasWords", 22 "name": "UpdateAccountDescriptionFlow", 23 "namespace": "FlowTesting.PkgNs1", 24 "seeAllData": true, 25 "time": 129 26 } 27 ], 28 "totalTime": 12189 29} 30