3

为 Java 代理和仪器库的代码创建单元测试的标准方法是什么。我已经使用 Byte Buddy 框架创建了一个 Java 代理,用于在 Web 应用程序之上开发分析器,现在我想为这个代理编写 JUnit 测试用例。

4

1 回答 1

4

您可以从Byte Buddy 自己的用于创建 Java 代理的单元测试中获得灵感。为此,请声明对byte-buddy-agent模块的测试依赖项。该模块包括一个类,该类能够在运行时附加一个 Java 代理,使用ByteBuddyAgent.install()它返回一个Instrumentation实例。确保在运行单元测试后删除 Java 代理。否则,您的代理将在任何后续测试中保持活动状态。

创建可重复测试的一个棘手部分是在应用代理之前不得加载类。Byte Buddy 的测试工具通过创建一个ByteArrayClassLoader能够处理所有受检测的类的工具来解决这个问题。由于此类加载器是动态创建的,因此可以保证这一点。

大多数 JDK 捆绑的 VM 都能够在运行时附加 Java 代理。可以肯定的是,Byte Buddy 确实AgentAttachmentRule为 JUnit 定义了一个在运行测试之前断言此功能的方法。你也可以考虑这个。

于 2016-02-24T09:18:07.033 回答