ApexCodeCoverage
Supported SOAP API Calls
describeSObjects(), query(), retrieve()
Supported REST API HTTP Methods
Query, GET
Special Access Rules
In API version 49.0 and later, users must have the View Setup and Configuration and View All Data permissions to access this object.
Fields
Field | Details |
---|---|
ApexTestClassId |
|
TestMethodName |
|
ApexClassorTriggerId |
|
NumLinesCovered |
|
NumLinesUncovered |
|
Coverage |
|
Usage
To query for code coverage, specify an Apex class, test class, or both. The returned JSON or XML object contains 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:
SELECT Coverage
FROM ApexCodeCoverage
WHERE ApexClassOrTriggerId = ‘01pD000000066GR’
AND ApexTestClassId = ‘01pD000000064pu’
For per-class code coverage, the query is:
SELECT Coverage
FROM ApexCodeCoverage
WHERE ApexClassOrTriggerId = ‘01pD000000066GR’
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 isn’t executable and doesn’t require coverage. For example, if the covered lines are 2, 9, and 11, and uncovered lines are 3, 4, 5, and 6; the result is: {2,9,11},{3,4,5,6}. The missing lines (1, 7, 8 and 10) aren’t executable.
ApexCodeCoverage acc = null; //Query for an ApexCodeCoverage object
Coverage coverage = acc.coverage;
int[] covered = coverage.coveredLines;
int[] uncovered = coverage.uncoveredLines;
int percent = covered.length / (covered.length + uncovered.length);
System.out.println("Total class coverage is " + percent + "%.");