java - Javaagent Instrumentation Framework 的 JUnit 测试框架

标签 java unit-testing junit byte-buddy

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

最佳答案

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

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

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

关于java - Javaagent Instrumentation Framework 的 JUnit 测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35577485/

相关文章:

java - 如何使用 Spring Boot + Spring Data JPA 对悲观锁定进行单元测试

ios - XCTAssertThrows 在 32 位架构上崩溃

java - 整理 JUnit 4 动态套件的详细信息

performance - 与 googletest 和 Jenkins 比较/趋势测试数据

java - 是否可以创建具有空区域的 AWS s3 存储桶

java - 更改tomcat的时区

java - 对需要强制转换的 Java 泛型感到困惑

c# - 单元测试垃圾收集

java - 实现搜索文档(PDF、XML、HTML、MS Word)搜索的最佳方法是什么?

java - Eclipse 中 ECLemma 代码覆盖工具的奇怪行为