重写AssertListener类中的相关方法
public class AssertListener extends TestListenerAdapter {
private int index = 0 ;
@Override
public void onTestStart ( ITestResult iTestResult) {
super . onTestStart ( iTestResult) ;
Assertion. flag = true ;
Assertion. errors. clear ( ) ;
}
@Override
public void onTestSkipped ( ITestResult iTestResult) {
this . handleAssertion ( iTestResult) ;
}
@Override
public void onTestSuccess ( ITestResult iTestResult) {
this . handleAssertion ( iTestResult) ;
}
@Override
public void onTestFailure ( ITestResult iTestResult) {
this . handleAssertion ( iTestResult) ;
}
private void handleAssertion ( ITestResult tr) {
if ( ! Assertion. flag) {
ThreadEntry entry = new ThreadEntry ( ) ;
AndroidDriver driver = entry. getDriver ( ) ;
Throwable throwable = tr. getThrowable ( ) ;
if ( throwable == null) {
throwable = new Throwable ( ) ;
}
StackTraceElement[ ] traces = throwable. getStackTrace ( ) ;
StackTraceElement[ ] alltrace = new StackTraceElement [ 0 ] ;
for ( Error e : Assertion. errors) {
StackTraceElement[ ] errorTraces = e. getStackTrace ( ) ;
StackTraceElement[ ] et = this . getKeyStackTrace ( tr, errorTraces) ;
StackTraceElement[ ] message = new StackTraceElement [ ] { new StackTraceElement ( "message : " + e. getMessage ( ) + " in method : " , tr. getMethod ( ) . getMethodName ( ) , tr. getTestClass ( ) . getRealClass ( ) . getSimpleName ( ) , index) } ;
index = 0 ;
alltrace = this . merge ( alltrace, message) ;
alltrace = this . merge ( alltrace, et) ;
}
if ( traces != null) {
traces = this . getKeyStackTrace ( tr, traces) ;
alltrace = this . merge ( alltrace, traces) ;
}
throwable. setStackTrace ( alltrace) ;
tr. setThrowable ( throwable) ;
Assertion. flag = true ;
Assertion. errors. clear ( ) ;
tr. setStatus ( ITestResult. FAILURE) ;
if ( driver != null) {
ScreenShot. screenshot ( driver, tr. getTestClass ( ) . getRealClass ( ) . getSimpleName ( ) + "." + tr. getMethod ( ) . getMethodName ( ) ) ;
}
}
}
private StackTraceElement[ ] getKeyStackTrace ( ITestResult tr, StackTraceElement[ ] stackTraceElements) {
List< StackTraceElement> ets = new ArrayList < StackTraceElement> ( ) ;
for ( StackTraceElement stackTraceElement : stackTraceElements) {
if ( stackTraceElement. getClassName ( ) . equals ( tr. getTestClass ( ) . getName ( ) ) ) {
ets. add ( stackTraceElement) ;
index = stackTraceElement. getLineNumber ( ) ;
}
}
StackTraceElement[ ] et = new StackTraceElement [ ets. size ( ) ] ;
for ( int i = 0 ; i < et. length; i++ ) {
et[ i] = ets. get ( i) ;
}
return et;
}
private StackTraceElement[ ] merge ( StackTraceElement[ ] traces1, StackTraceElement[ ] traces2) {
StackTraceElement[ ] ste = new StackTraceElement [ traces1. length+ traces2. length] ;
for ( int i = 0 ; i < traces1. length; i++ ) {
ste[ i] = traces1[ i] ;
}
for ( int i = 0 ; i < traces2. length; i++ ) {
ste[ traces1. length+ i] = traces2[ i] ;
}
return ste;
}
编写Assertion类
public class Assertion {
public static boolean flag = true ;
public static List< AssertionError> errors = new ArrayList < AssertionError> ( ) ;
public static void verifyEquals ( Object actual, Object expected) {
try {
Assert. assertEquals ( actual, expected) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyEquals ( Object actual, Object expected, String message) {
try {
Assert. assertEquals ( actual, expected, message) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyNotEquals ( Object actual, Object expected) {
try {
Assert. assertNotEquals ( actual, expected) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyNotEquals ( Object actual, Object expected, String message) {
try {
Assert. assertNotEquals ( actual, expected, message) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyNulls ( boolean actual, boolean expected) {
try {
Assert. assertEquals ( actual, expected) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyNulls ( boolean actual, boolean expected, String msg) {
try {
Assert. assertEquals ( actual, expected, msg) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyTure ( boolean actual) {
try {
Assert. assertTrue ( actual) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyTure ( boolean actual, String expected) {
try {
Assert. assertTrue ( actual, expected) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyFalse ( boolean actual) {
try {
Assert. assertTrue ( actual) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyFalse ( boolean actual, String expected) {
try {
Assert. assertTrue ( actual, expected) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
public static void verifyNull ( Object actual, Object expected) {
try {
Assert. assertEquals ( actual, expected) ;
} catch ( AssertionError e) {
errors. add ( e) ;
flag = false ;
}
}
}
在xml添加监听
< listeners>
< listener class - name= "*****.AssertListener" > < / listener>
< / listeners>