2016-04-01 7 views
0

Für Regressionstests (nicht Komponententests), wo wir in TestNG ausführlich ausgearbeitete Szenarien haben, gibt es einen geeigneten Ort, an dem die Assert-Prüfungen durchgeführt werden sollten? Ist es wichtig oder nicht, ob es im Testfall oder in einer Aufrufmethode ist? Zum Beispiel:Sollte Assert in den Testfall oder die Verifikationsmethode gesetzt werden?

Dieser Testfall ruft eine Validierungsmethode, die das behauptet enthält:

@Test 
public void test1() { 
    validateResponse(); 
} 

public void validateResponse() { 
    Assert.assertEquals(a, "123"); 
    Assert.assertEquals(b, "455"); 
    Assert.assertEquals(c, "5678"); 
    Assert.assertEquals(d, "3333"); 
} 

Dieser Testfall behauptet auf dem Rückgabewert der Überprüfungsmethode basiert:

@Test 
public void test1() { 
    Assert.assertTrue(validateResponse()); 
} 

public boolean void validateResponse() throws Exception { 
    try { 
     if (!a.equals("123")) throw new Exception(); 
     if (!b.equals("455")) throw new Exception(); 
     if (!c.equals("5678")) throw new Exception(); 
     if (!d.equals("3333")) throw new Exception(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
    return true; 
} 

Antwort

2

Ihre assert sollte Seien Sie so spezifisch und detailliert wie möglich, um dem Entwickler zu helfen, das Problem schnell zu identifizieren. z.B.

@Test 
public void testResponseFields(){ 
    // create response to be tested 

    // JUnit style 
    Assert.assertEquals("Response 'alpha' should be '123'", 123, response.getAlpha()); 

    // TestNG style 
    Assert.assertEquals(response.getAlpha(), 123, "Response 'alpha' should be '123'"); 
} 

Sobald Sie eine Fehlermeldung in der Assert.assertXX Rufaufbau, es eher einen strittigen Punkt wird, wo die Assert genannt wird, wie Sie eine Nachricht Erläuterung das Problems und einen Stack-Trace haben, um zu sehen, wo und wenn es fehlgeschlagen ist.