【发布时间】:2018-08-01 02:22:41
【问题描述】:
为 Java 代理和仪器库的代码创建单元测试的标准方法是什么。我已经使用 Byte Buddy 框架创建了一个 Java 代理,用于在 Web 应用程序之上开发分析器,现在我想为这个代理编写 JUnit 测试用例。
【问题讨论】:
标签: java unit-testing junit byte-buddy
为 Java 代理和仪器库的代码创建单元测试的标准方法是什么。我已经使用 Byte Buddy 框架创建了一个 Java 代理,用于在 Web 应用程序之上开发分析器,现在我想为这个代理编写 JUnit 测试用例。
【问题讨论】:
标签: java unit-testing junit byte-buddy
您可以从 Byte Buddy's own unit tests 获得灵感来创建 Java 代理。为此,请声明对 byte-buddy-agent 模块的测试依赖项。该模块包括一个能够在运行时使用ByteBuddyAgent.install() 附加Java 代理的类,该类返回一个Instrumentation 实例。确保在运行单元测试后删除 Java 代理。否则,您的代理将在任何后续测试中保持活动状态。
创建可重复测试的一个棘手部分是在应用代理之前不能加载类。 Byte Buddy 的测试工具通过创建一个ByteArrayClassLoader 来解决这个问题,该ByteArrayClassLoader 能够处理所有受检测的类。由于此类加载器是动态创建的,因此可以保证这一点。
大多数捆绑了 JDK 的 VM 都能够在运行时附加 Java 代理。可以肯定的是,Byte Buddy 确实为 JUnit 定义了一个 AgentAttachmentRule,它在运行测试之前断言了此功能。你也可以考虑一下。
【讨论】: