distinguishes between failures and errors.
This is something i honestly haven't thought about while testing with JUnit, we only know if the output is the same as the expected one but we never know if the program is in a state of error and i think this is really usefull to better test programs.