I am trying to do a sfdx force:mdapi:deploy to my production org. I am just migrating one class file, however when I do that I keep getting code coverage failures on custom classes that are already in the production org and not being migrated with this deployment. Is this normal behavior? This is my first deployment and I not sure if I now need to write test classes for those existing classes.

  • How did you make the package.xml file that gets used with force:mdapi:deploy? If You used force:source:convert, then the package.xml file contains everything in your sfdx project (not just the files that were changed)
    – Derek F
    Commented Apr 15, 2019 at 19:12
  • @DerekF I made my change and did a deploy to the sandbox org. Then I used sfdx force:mdapi:retrieve -r metadata -u prodOrg -k manifest/package.xml. In this package.xml I only specified the Apex class I wanted. I only see that file in the zip
    – MarkC5000
    Commented Apr 15, 2019 at 19:23

1 Answer 1


You need to specify which tests to run to get sufficient coverage. Presuming you already have proper coverage, you can simply just do this:

sfdx force:mdapi:deploy -d src -l RunLocalTests -w 60

Where -d is the source for the code you're deploying, -l tells Salesforce which tests to run (the demonstrated option runs all of your org's tests), and -w is the time to wait, in minutes (adjust as necessary).

See force:mdapi:deploy documentation for more options you can choose.

If you specify RunLocalTests, the aggregate code coverage must be 75%; if you choose RunSpecifiedTests, each class that runs in a test must individually meet the 75% requirement. In other words, even though you're deploying just one class you need to make sure all classes touched by any unit tests that are run have at least 75% coverage if you want to only run the one unit test. Otherwise, you'll need to run all tests to get the more lenient 75% aggregate coverage limit.

  • Right now I have 1 test class that has covered my new updated code, but its failing on the existing classes, but I guess that is normal then. Would I be able to get around this if I use change sets or would I still need to write tests for these other classes? I am just wondering how this code was able to be migrated in the first place if there was no coverage.
    – MarkC5000
    Commented Apr 15, 2019 at 19:33
  • @MarkC5000 Did you use RunLocalTests?
    – sfdcfox
    Commented Apr 15, 2019 at 20:01
  • I was able to run a specific test and then I was able to push the code through
    – MarkC5000
    Commented Apr 26, 2019 at 16:20
  • I think @MarkC5000 marked this is answer although it was not. I constantly run into such problems WITH RunLocalTests and the overall coverage being above 75%. Commented Jun 7, 2019 at 14:42
  • If you need to check code coverage when simulating deployment to a sandbox, you can use this workaround -> nicolas.vuillamy.fr/… Commented Feb 15, 2023 at 10:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .