What is a branch in code coverage for javascript unit testing -
i use istanbul code coverage of unit tests in angularjs project. there 4 types of coverage , statement, branch, function , line coverage. statement, function , line allright don't understand "branch" is. explain branch is? thanks
a branch runtime can choose whether can take 1 path or another. lets take following example:
if(a) { foo(); } if(b) { bar(); } yay(); when reaching first line, can decide if wants go inside body of if(a)-statement. also, can decide not that. @ stage, we've seen 2 paths (one branch).
the next statement after gets more interesting. can go inside if body , execute bar. can not that. remember we've had branch before. result may vary if foo called or not.
so end 4 possible paths:
- not calling
foo, not callingbareither - calling
foo, not callingbar - not calling
foo, callingbar - calling both
foo,bar
the last yay executed, no matter if foo or bar called, doesn't count branch. code snippet above contains 4 paths / 2 branches.
like other answers have mentioned, there numerous statements can cause branch (if/switch). don't forget conditional-loops, such while/for/do-while though.
the code coverage tool wants make sure you've tested branches. best if paths have been tested, not branches. this, make sure no unwanted behavior executed.
Comments
Post a Comment