17

I'm having a very odd issue pop up wherein if I put all 75 of my account testMethods in one class, I get less than stellar coverage (maybe 70%) but if I split those testMethods up into 8-10 smaller classes (same 75, but split) then I get higher coverage (upwards of 90-95%)

This is in the sandbox

Is this just a glitch in the way they calculate code coverage in test? Or is this actually something I need to pay attention to and not allow more than x testMethods per class?

14
  • Are you by chance getting those total coverage figures from Run All Tests or from the Developer Console or org estimation? Mar 30 '15 at 21:50
  • 2
    I would open a case by salesforce for sure. It is pure coverage bug. Mar 30 '15 at 21:54
  • 1
    That's good. The aggregate result mode is usually less accurate.
    – sfdcfox
    Mar 31 '15 at 15:00
  • 2
    Have you tried Test > Clear Test Data in the dev console? I've noticed that it sometimes caches results, and they're reported incorrectly.
    – powlo
    Aug 26 '15 at 11:49
  • 1
    Do the both classes have the same version? Did you solve this issue?
    – Patlatus
    Mar 8 '16 at 12:18
1

Distilling the comments:

  1. Clear out all the test coverage and try running it all from scratch. There can be caching issues with previous test runs. See How to eliminate bad code coverage data for apex classes ?
  2. Avoid the “Store Only Aggregated Code Coverage” option for test runs unless your volume of tests requires it.
  3. Consider disabling parallel testing. Also accessible via the Apex Test Execution Options page.
  4. Compile all the classes before running the tests.
  5. Check that the API versions for the test class and the class being tested are the same.

Apex Test Execution Options

If those steps fail you, raise a support case with Salesforce.

See also:

0

That's really odd, although the test coverage % results are really just estimates. That might be what you're running into, where salesforce is calculating it differently because it's in 1 big class vs separate classes. Doesn't make a lot of sense to me, but if you're really concern you're best bet is to submit a support case. You might also want to try the developer boards.

0
0

It does happen sometimes. I guess the most likely reason is about test data which will be different between all tests and separate tests.

1
  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post
    – cropredy
    Apr 30 '16 at 17:15
0

I am not 100% sure but If your class has if else blocks it would cover either if or else even though you have data for both the conditions. This happens when your class is being called by trigger and you do not call it directly in the test class. And in such a case you are needed to do it in separate test methods.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.