"what exactly is the purpose of setUp() method in Junit that runs before each test case ?"
Isolamento.
Se una risorsa condivisa, ad es. un falso deposito persistente, viene utilizzato da ogni caso di test, è necessario assicurarsi che sia nello stesso stato all'inizio di ogni test.
Altrimenti, se non inizializzi un negozio in quel modo e i tuoi test (con la convenzione di denominazione: MethodUnderTest_Condition_ExpectedBehaviour) vengono eseguiti in un ordine, ad esempio:
1: AddObject_GivenObject_AddsObjectToStore
2: GetObjectById_IdThatExistsInStore_ReturnsObject
quindi il test 2 dipende dal test 1 che aggiunge l'oggetto al negozio e non è più un test unitario corretto. Se vengono eseguiti in un ordine diverso, il codice di lavoro di GetObjectById () non supererà il test dell'unità, fornendo un falso negativo.
I buoni test unitari non hanno un ordine necessario per essere eseguiti.
"this dependency may cause large number of test cases to fail if something changes ."
Questa è una buona cosa, quelle unità testano ciascuna prova in modo diverso e falliscono in modo appropriato. Se si tratta di una piccola modifica che ha causato il fallimento, sarà una piccola correzione che farà passare nuovamente i test.