2016-11-09 2 views
0

Ich verwende Logback in meinem Selenium Webdriver-Projekt und ich suche nach einer Möglichkeit, den Status (ob der Test bestanden oder nicht bestanden) am Ende zu protokollieren Wenn Sie durch die Protokolle schauen, wissen Sie, welcher Test fehlgeschlagen ist.Java - Logback zur Anzeige des Status des Laufs (bestanden/nicht bestanden)

Ich habe eine afterMethod, wo ich zur Zeit log „testGoogleWebsite beendet hat“, wollen aber bekommen „testGoogleWebsite ausgefallen“ oder „testGoogleWebsite bestanden hat“.

Mein Test:

@Test 
public void testGoogleWebsite() { 
    openGoogleWebsite(); 
    searchForStackOverflow(); 
    clickOnStackOverflowLink(); 
} 


@AfterMethod 
public void afterMethod(Method method){ 
    LOG.debug(method.getName() + " has finished"); 
} 

Meine logback Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <property name="DEV_HOME" value="target/Logs" /> 

    <appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${DEV_HOME}/debug.log</file> 
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
      <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</Pattern> 
     </encoder> 

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- rollover daily --> 
      <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy 
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
       <maxFileSize>10MB</maxFileSize> 
      </timeBasedFileNamingAndTriggeringPolicy> 
     </rollingPolicy> 

    </appender> 

    <logger name="com.test" level="debug" additivity="false"> 
     <appender-ref ref="FILE-AUDIT" /> 
    </logger> 

    <root level="debug"> 
     <appender-ref ref="FILE-AUDIT" /> 
    </root> 

</configuration> 
+0

So verwenden Sie TestNG, nicht wahr? Weil dies das relevanteste Tag für Ihre Frage sein sollte. –

Antwort

1
@AfterMethod 
public void afterMethod(ITestResult result) 
{ 

    String tcName = result.getName(); 
    if(result.getStatus() == ITestResult.SUCCESS) 
    { 

     //Do something here 
     LOG.debug(tcName + " has passed"); 
    } 

    else if(result.getStatus() == ITestResult.FAILURE) 
    { 
     //Do something here 
     LOG.debug(tcName + " has failed"); 

    } 

    else if(result.getStatus() == ITestResult.SKIP){ 

     LOG.debug(tcName + " has skipped"); 
    } 
} 
0

Weil ich @AfterMethod gesehen habe, nehme ich an, dass Sie TestNG verwenden.

Dann können Sie versuchen:

@AfterMethod 
public void tearDown(ITestResult result) { 
    String methodName = result.getMethod().getMethodName(); 
    if (result.getStatus() == ITestResult.FAILURE) { 
     LOG.debug(methodName + " has failed"); 
    } else if (result.getStatus() == ITestResult.SUCCESS) { 
     LOG.debug(methodName + " has passed"); 
    }  
} 
Verwandte Themen