有没有办法让ClassLoader加载哪些类?

uri*_*ium 13 java unit-testing jvm classloader

我正在尝试为旧框架实现一些单元测试.我试图模拟出数据库层.不幸的是,我们的框架有点陈旧,并没有完全采用最佳实践,因此没有明确的关注点分离.我有点担心试图模拟数据库层可能会使JVM加载大量甚至无法使用的类.

我不太了解类加载器,所以这可能不是问题.有没有办法在特定ClassLoader加载的所有类中达到峰值,以证明引擎盖下发生了什么?

Ale*_*ler 40

您可以创建自己的类加载器并在单元测试期间使用它加载.让自己的自定义类加载器打印出它正在做的事情.

或者,如果您只想知道加载了哪些类,请执行以下操作:

java -verbose:class
Run Code Online (Sandbox Code Playgroud)


Kel*_*nch 15

请注意使用

java -verbose
Run Code Online (Sandbox Code Playgroud)

会产生大量的输出.将输出记录到文件,然后使用grep.如果你有'tee'过滤器,你可以试试这个:

java -verbose | tee classloader.log
grep class classloader.log
Run Code Online (Sandbox Code Playgroud)