2016-11-30 2 views
0

Dies ist mein Test ist:JUnit-Testcode stoppt nach der Überprüfung eine Ausnahme Ausführung

import org.junit.rules.ExpectedException; 
    @Rule 
    public final ExpectedException exception = ExpectedException.none(); 

    @Test 
    public void testSearch() { 
     List<Integer> myList = Arrays.asList(new Integer[] {1, 2, 4, 6, 3, 1, 2}); 
     exception.expect(NoSuchElementException.class); 
     SimpleSearch.search(myList, 5); 
     System.out.println("here"); 

     exception.expect(NoSuchElementException.class); 
     assertEquals(1, SimpleSearch.search(myList, 22)); 
} 

Wenn ich es laufen, sie sagt, es 1/1 lief aber nicht here druckt und es tut nicht behauptet oder führen Sie alle Zeilen unterhalb der Zeile SimpleSearch.search(myList, 5); aus (nachdem die Ausnahme abgefangen wurde).

Wie bekomme ich es weiter nach dem Abfangen einer Ausnahme (ich möchte es innerhalb der gleichen testSearch Funktion tun)?

+0

Warum wollen Sie fortfahren? – developer

+0

@javaguy Weil ich den Rest des Codes testen möchte. – user2719875

+1

Verschieben Sie es in eine separate Methode. – shmosel

Antwort

2

Ihre Tests sollten detailliertere in diesem Fall sein und teilen Sie die 2 Testfälle

@Test(ExpectedException=NoSuchElementException.class) 
    public void testSearch_NotFound() { 
     List<Integer> myList = Arrays.asList(new Integer[] {1, 2, 4, 6, 3, 1, 2}); 
     SimpleSearch.search(myList, 5); 
    } 

    @Test 
    public void testSearch() { 
     List<Integer> myList = Arrays.asList(new Integer[] {1, 2, 4, 6, 3, 1, 2}); 
     assertEquals(1, SimpleSearch.search(myList, 22)); 
    } 
2

Der Code funktioniert wie vorgesehen. ExpectedException sagt nur: der Test sollte diese besondere Ausnahme werfen, aber das tut nicht bedeuten: und weiter Ausführung. Jede Ausnahme stoppt die Ausführung des Programms an diesem Punkt. Der normale Weg, dies in Java zu umgehen, ist die Verwendung eines try .. catch Blocks.

@Test 
public void testSearch() { 

    List<Integer> myList = Arrays.asList(new Integer[] {1, 2, 4, 6, 3, 1, 2}); 
    try { 
     SimpleSearch.search(myList, 5); 
     Assert.fail("Did not find NoSuchElementException!"); 
    } 
    catch(NoSuchElementException ex) { 
     // ignored 
    } 
    System.out.println("here"); 

    // the rest of your code is nonesense 
} 
Verwandte Themen