2010-08-04 12 views

Répondre

0

J'ai utilisé jmockit dans les tests unitaires cela pourrait se moquer de presque tout. En étendant cela, java.lang.instrument.Instrumentation devrait aussi fonctionner.

1

Oui, c'est possible, mais pas très simple. Le problème avec l'utilisation de java.lang.instrument.Instrumentation est que vous aurez TOUJOURS besoin d'utiliser un agent JVM. Une bonne introduction aux agents JVM est disponible au http://www.javabeat.net/2012/06/introduction-to-java-agents/. Cependant, comme vos tests unitaires s'exécutent également dans un environnement jvm, vous pouvez spécifier l'agent en tant qu'argument JVM.

Un agent JVM de création de rapports de mémoire pour ce que vous voulez faire et prêt à être emballé est disponible au https://github.com/jbellis/jamm. Vous pouvez le construire avec Maven ou Ant. Pour l'utiliser, vous le construisez, puis passez le suivant comme argument jvm lorsque vous démarrez le test unitaire ou une suite test unitaire:

-javaagent:<path to>/jamm.jar 

Dans les tests unitaires, vous pouvez instancier le MemoryMeter et l'utilisation il:

MemoryMeter meter = new MemoryMeter(); 
meter.measure(object); 
meter.measureDeep(object); 
meter.countChildren(object);