Автоматическое сравнение результатов профилирования Java для одного модульного теста

Я хочу запустить единичный модульный тест и собрать его "профилирующую" информацию: как часто вызывался каждый метод, сколько экземпляров определенного класса было создано, сколько времени это заняло для выполнения определенного метода/потока и т. д. Затем я хочу сравнить эту информацию с некоторыми ожидаемыми значениями. Существуют ли какие-либо профилировщики для Java, которые позволяют мне это сделать (все это должно быть сделано автоматически, без какого-либо графического интерфейса или взаимодействия с пользователем, конечно)?

Вот как я хочу, чтобы это работало:

public class MyTest {
  @Test
  public void justTwoCallsToFoo() {
    Profiler.start(Foo.class);
    Foo foo = new Foo();
    foo.someMethodToProfile(); // profiler should collect data here
    assertThat(
      Profiler.getTotalCallsMadeTo(Foo.class, "barMethod"), 
      equalTo(3)
    );
  }
}
7
задан Ingo Kegel 18 May 2012 в 09:05
поделиться