Newer Version Available

This content describes an older version of this product. View Latest

ApexCodeCoverage

Represents code coverage test results for an Apex class or trigger. Available in Tooling API version 29.0 and later.

Supported SOAP API Calls

describeSObjects()query()retrieve()

Supported REST API HTTP Methods

Query, GET

Fields

Field Details
ApexTestClassId
Type
string
Properties
Filter, Group, Sort
Description
The ID of the test class.
TestMethodName
Type
string
Properties
Filter, Group, Sort
Description
The name of the test method.
ApexClassorTriggerId
Type
string
Properties
Filter, Group, Sort
Description
The ID of the class or trigger under test.
NumLinesCovered
Type
int
Properties
Filter, Group, Sort
Description
The number of covered lines.
NumLinesUncovered
Type
int
Properties
Filter, Group, Sort
Description
The number of uncovered lines.
Coverage
Type
complexvalue
Properties
None
Description
Two lists of integers. The first is the covered lines, and the second is the list of uncovered lines. If a lines is missing from both lists, the line is not executable and does not require coverage.
Coverage includes the following fields:
  • coveredLines
  • namespace
  • uncoveredLines

Usage

To query for code coverage, specify an Apex class, test class, or both. The returned JSON or XML object will contain two lists of integers: one for covered and one for uncovered lines.

The following example SOQL query retrieves code coverage results for a specific class or trigger covered by a specific test class:

1SELECT Coverage
2FROM ApexCodeCoverage 
3WHERE ApexClassOrTrigger = ‘01pD000000066GR’ 
4AND ApexTestClass = ‘01pD000000064pu’

For per-class code coverage, the query would be:

1SELECT Coverage
2FROM ApexCodeCoverage 
3WHERE ApexClassOrTrigger = ‘01pD000000066GR’

In this case, multiple rows may be returned, since there may be multiple test classes that cover the same test class.

Note

As noted above, Coverage is returned as two lists of integers. The first is the covered lines, and the second is the list of uncovered lines. If a line is missing from both lists, the line is not executable and does not require coverage. For example, if the covered lines are 2, 9, and 11, and uncovered lines are 3, 4, 5, and 6; the result would be: {2,9,11},{3,4,5,6}. The missing lines (1, 7, 8 and 10) are not executable.

Code coverage percentage is a simple calculation of the number of covered lines divided by the sum of the number of covered lines and the number of uncovered lines. For example, to calculate code coverage percentage in SOAP:  
1ApexCodeCoverage acc = null; //Query for an ApexCodeCoverage object 
2Coverage coverage = acc.coverage; 
3int[] covered = coverage.coveredLines; 
4int[] uncovered = coverage.uncoveredLines; 
5int percent = covered.length / (covered.length + uncovered.length); 
6System.out.println("Total class coverage is " + percent + "%.");