Я хочу запустить единичный модульный тест и собрать его "профилирующую" информацию: как часто вызывался каждый метод, сколько экземпляров определенного класса было создано, сколько времени это заняло для выполнения определенного метода/потока и т. д. Затем я хочу сравнить эту информацию с некоторыми ожидаемыми значениями. Существуют ли какие-либо профилировщики для 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)
);
}
}