Простой метод вывода таймингов jUnit в потребляемый формат - PullRequest
0 голосов
/ 18 мая 2011

Я бы хотел зафиксировать время из моих тестов jUnit в каком-нибудь формате, который я могу использовать в Excel или CSV. Есть ли инструмент или даже простой способ сделать это с помощью инъекции, чтобы сделать это?

Я видел jUnitPerf , но это не включает никакого вывода, а также требует кода для создания наборов тестов, что гораздо сложнее, чем я думаю.

(исследовал следующие вопросы, не найдя ответа)

1 Ответ

1 голос
/ 22 мая 2011

Один из способов - написать собственного бегуна с пользовательским слушателем:

public class TimingRunner {

  public static void main(String... args) throws Exception {
    JUnitCore junit = new JUnitCore();
    RunListener listener = new TimingListener();
    junit.addListener(listener);

    List<Class<?>> classes = new ArrayList<Class<?>>();
    for (String each : args) {
      classes.add(Class.forName(each));
    }

    Result result = junit.run(classes.toArray(new Class[0]));
    system.exit(result.wasSuccessful() ? 0 : 1);
  }


  private static class TimingListener extends RunListener {
    private Map<Description, Long> tests = new HashMap<Description, Long>();

    @Override
    public void testStarted(Description description) {
      tests.put(description, System.currentTimeMillis());
    }

    @Override
    public void testFinished(Description description) throws Exception {
      Long startTime = tests.get(description);
      if (startTime != null) {
        long runTime = System.currentTimeMillis() - startTime.longValue();
        System.out.println(description + ", " + runtime + "\n");
      }
    }

    @Override
    public void testRunFinished(Result result) throws Exception {
      System.out.flush();
    }
  }
}

Передайте имена классов тестов, которые вы хотите назначить, главной TimingRunner.

...