public int getNameLength(boolean isCoolUser) { User user = null; if (isCoolUser) { user = new John(); } return user.getName().length(); // NPE if user == null}
To Cover all statements: (1 Test case)
isCoolUser = true
To Cover all branches: (2 Test cases)
isCoolUser = true
isCoolUser = false
It is necessary as you can see that if you don’t cover all the branches then you will get NPE
Simpler example
int fun(int a, int b) { if (a > 0) { if (b > 0) { return 1; } } else { return 2; }}