2010-08-04 3 views

Antwort

0

Ich benutzte jmockit in Unit-Tests konnte dies fast alles vortäuschen. Wenn man das erweitert, sollte java.lang.instrument.Instrumentation auch funktionieren.

1

Ja, das ist möglich, aber nicht sehr einfach.

Das Problem bei der Verwendung von java.lang.instrument.Instrumentation ist, dass Sie IMMER einen JVM-Agenten verwenden müssen. Eine gute Einführung in JVM-Agenten finden Sie unter http://www.javabeat.net/2012/06/introduction-to-java-agents/.

Da Ihre Komponententests jedoch auch in einem jvm ausgeführt werden, können Sie den Agenten als JVM-Argument angeben.

Ein Speicherberichterstattungs-JVM-Agent für das, was Sie tun möchten und bereit zum Verpacken, ist unter https://github.com/jbellis/jamm verfügbar. Sie können es entweder mit Maven oder Ant bauen. Um es zu benutzen, können Sie es bauen und dann die folgenden als JVM-Argument übergeben, wenn Sie das Gerät zu testen oder Unit-Test-Suite zu starten:

-javaagent:<path to>/jamm.jar 

Innerhalb der Unit-Tests können Sie dann die MemoryMeter instanziiert und Verwendung es:

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