We all know (Hopefully), atleast 75% code coverage by unit test is needed in order to deploy apex classes to production. Sometimes we have a situation (I had it many times!!) where a class needs to be deployed but coverage is hitting around 70% – 72%. You don’t have time and client is just sitting on your head, What to do now? You are exhausted and having no idea what is failing, how to fix it.
Here I have a small trick using which you can get rid of this situation (for time being) and deploy the class in production urgently.
Before moving further, you should understand how the coverage is calculated. Lets say you are having an apex class of 100 lines. With the test class, 40 lines are getting covered, so the total coverage of the class is 40/100 * 100 = 40%.
For example, we have following apex class
public class A{
public void method1(){
try{
//100 lines of code
}
catch(exception e){
system.debug(e.getMessage());
}
}
}
You have written test class for it, but out from 100 lines under try block, the code is failing at line 40 and its being captured under catch block. So overall code coverage is going about 40 – 42% (lets assume). You are not sure what is causing this issue but need to be deployed as soon as possible.
Trick is, you need to create another method in your apex class. Which will look like as follows
public class A{
public void method1(){
try{
//100 lines of code
}
catch(exception e){
system.debug(e.getMessage());
}
}
public static void fakeMethod(){
integer i = 0;
i++;
i++;
i++;
i++;
//repeat i++ statement each line for 195 times
}
}
Here we added one fakeMethod having 200 lines of code (As per Salesforce) but its meaningless (I know but this is the trick). Compiler will compile the code is having app 100 + 200 = 300 lines. Now in test class you need to invoke just a method like below:
@isTest
class global TestClass{
static testMethod void fakeTest(){
//whatever logic you have for test method earlier
A.fakeMethod(); //method invocation
}
}
So here, earlier test class was covering 10 lines, but with this trick, total lines covered are 40 + 200 = 240. The coverage for the apex class will be now (240/300 * 100) = 80%.
Voila, Thats it! This is also known as “The power of 1“. I would not recommend to use this trick as its ofcourse a bad coding practice, but better you should know.
People who do this are definitely bad developers.
I hope this post is a joke. If you even think about doing this, you need to consider doing something else than software development.
Please read “The Pragmatic Programmer”, by David Thomas and Andrew Hunt, for inspiration on how to be a better developer.
Thank you for sharing. This is really helpful. I agree that you should never do this but as an admin with no development experience and no on-site developers, I appreciate the workaround.