我正在尝试检测Java类,通过EvoSuite动态为原始类生成测试,然后在该类中执行测试,但是当我通过执行注入到该类中的javac
流程指令进行编译时,却没有被执行。
我正在使用EvoSuite,因为我希望能够在运行时为任何类中的任何方法捕获变量,而无需显式指定参数。自动生成输入是必不可少的,因为我希望能够执行此操作,而不需要来自用户的类和方法名称以外的其他输入。
我有一个使用类名作为参数的工具,该工具通过在运行时以及通过URLClassLoader
在类中执行方法时注入指令以动态捕获值来对类进行检测。我感兴趣的值是通过通过类加载器获得的Class
对象执行时捕获的。但是,当我通过工具执行以下步骤时:
ProcessBuilder
执行命令行参数来编译这些测试。JUnitCore
执行测试。但是,实际上没有捕获到我希望捕获的变量,并且当我在工具代码中插入调试日志记录语句时,它表明当EvoSuite测试进行时,用于记录变量的方法没有被调用。正在运行。
我可以使用javax.tools.ToolProvider
通过链接类的检测版本而不是未插入的源字节码来编译测试。