你能在@Aftersuite中使用TestNG Reporter.log()吗?

时间:2016-02-19 23:11:46

标签: testng

我正在尝试从我的afterSuite类访问一个集中的测试数据对象,并使用Reporter.log()将一段数据记录到@aftersuite中的testNG报告者。

这是我的代码:

@AfterSuite(alwaysRun = true)
public void aftersuite()
{
    int count = glikkerData.getGlickers();
    Reporter.log("Number of glikkers:  " + count);
}

我没有在TestNG报告中得到理想的陈述。 @aftersuite函数中的'Reporter.log()'无效吗?

更新 - 特定情景

我有一个名为“ImageManager”的TestNG项目。它使用我创建的一个名为“CustomJerseyClient”的独立库。此CustomJerseyClient项目使用log4j记录Jersey客户端请求的连接错误。同样在CustomJerseyClient中,我创建了一个自定义log4j appender(我称之为log4j appender'TestNGReportAppender' - 1),它将所有loggingEvents添加到一个静态的日志记录事件数组中。

public class TestNGReportAppender extends AppenderSkeleton {

   private static ArrayList<LoggingEvent> listEvents = new ArrayList<LoggingEvent>();
   public static ArrayList<LoggingEvent> getListEvents() { return listEvents; }

   @Override
   protected void append(final LoggingEvent event) {
      listEvents.add(event);
      Reporter.log(eventToString(event));
   }

   private String eventToString(final LoggingEvent event) {
     ...
   }

  public boolean requiresLayout() {
     return true;
  }
}

目标是从CustomJerseyClient遍历此静态日志事件数组,并在ImageManager中的所有测试完成后计算连接错误的数量。连接错误数据已经从CustomJerseyClient向上流向ImageManager(通过TestNGReportAppender),但是现在我无法在执行所有测试后通过TestNG Reporter报告数据 - 现在数据卡在项目中。

1 个答案:

答案 0 :(得分:0)

Reporter.Log不能直接或通过TestListenerAdapter在套件之后工作我只是试过它。你能告诉我你的发现是否也一样吗?

您能否完全按照您想要计算的内容和报告机制的含义来解释您的用例?如果它是一个通用的用例,我可以创建一些重要的东西。