【问题标题】:TestNG custom error message on timeout超时时的TestNG自定义错误消息
【发布时间】:2013-05-29 22:43:58
【问题描述】:

我想知道是否有任何方法可以自定义超时异常错误消息。

我的测试是通过使用 DataProvider 进行参数化的,因此我想在错误消息中包含有关参数的信息,以便了解哪些特定场景失败了。

错误信息

Method org.testng.internal.TestNGMethod.testEndpoint() didn't finish within the time-out 8000

堆栈跟踪

org.testng.internal.thread.ThreadTimeoutException: Method     
org.testng.internal.TestNGMethod.testEndpoint() didn't finish within the time-out 8000
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
    at sun.security.ssl.InputRecord.read(InputRecord.java:480)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:633)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:579)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1322)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)

【问题讨论】:

    标签: java unit-testing testng


    【解决方案1】:

    您可以通过实现接口ITestListener创建一个监听器类,并在onTestFailure()中使用getThrowable()获取异常

    String stackTraceString =      Throwables.getStackTraceAsString(getCurrentTestResult().getThrowable());
    

    以同样的方式,您应该能够 setThrowable() 修改错误短信(我没有检查自己)。

    【讨论】:

      【解决方案2】:

      您可以从 TestResult 对象中获取数据提供者参数。按照 Vlad 的建议,实现 ITestListener 接口。

      在onTestFailure中,使用result.getParameters获取参数,使用getThrowable获取异常。使用您的自定义消息创建一个新的 Throwable,附加您的参数并可能附加现有的消息(它有一个构造函数),然后使用 result.setThrowable 将此 Throwable 设置为结果对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-27
        • 2019-05-13
        • 2016-05-14
        • 1970-01-01
        • 1970-01-01
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多