我对JUnit和Javassist的了解比较浅,只是想用它们来做一些程序分析。例如,给定一个库,我想知道在运行时调用了库中的哪些方法。我可以使用字节码操作来插入 system.out.println("method_name"); 在方法的开头声明。所以在运行时,它会打印出调用了哪些方法。
在独立应用程序中,我可以在调用 main() 之前拦截并使用我自己的类加载器(见下文),但是在 JUnit 中没有 main(),谁能告诉我在这种情况下如何拦截?非常感谢。
...
Loader loader = new Loader( pool );
loader.addTranslator( pool, xlat );
loader.run( className, args );
...
编辑:我使用 JUnit 4.8 和 Javassist 3.15.0.GA