是否可以在JUnit测试中使用java.lang.instrument.Instrumentation?我正在使用mockrunner模拟Servlet,并希望测量存储在会话中的对象的大小。
发布于 2013-04-15 20:24:52
是的,这是可能的,但不是很简单。
使用java.lang.instrument.Instrumentation的问题是,您将始终需要使用JVM代理。http://www.javabeat.net/2012/06/introduction-to-java-agents/上提供了对JVM虚拟机代理的很好的介绍。
但是,由于您的单元测试也在jvm中运行,因此您可以将代理指定为JVM参数。
https://github.com/jbellis/jamm上提供了一个内存报告JVM代理,它可以帮助您完成想要做的事情,并且可以打包。您可以使用Maven或Ant构建它。为了使用它,您需要构建它,然后在启动单元测试或单元测试套件时将以下内容作为jvm参数进行传递:
-javaagent:<path to>/jamm.jar在单元测试中,您可以实例化MemoryMeter并使用它:
MemoryMeter meter = new MemoryMeter();
meter.measure(object);
meter.measureDeep(object);
meter.countChildren(object);https://stackoverflow.com/questions/3405703
复制相似问题