Javaagent Instrumentation Framework的JUnit测试框架

时间:2016-02-23 12:22:52

标签: java unit-testing junit byte-buddy

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

1 个答案:

答案 0 :(得分:3)

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

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

大多数JDK捆绑的VM都能够运行Java代理的附件。可以肯定的是,Byte Buddy确实为JUnit定义了一个XMPPUserCoreDataStorageObject *user = [self.xmppRosterStorage userForJID:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@", [[[message fromStr] componentsSeparatedByString:@"/"]objectAtIndex:0] ]] xmppStream:self.xmppStream managedObjectContext:[self managedObjectContext_roster]]; NSNumber *number = user.unreadMessages; int value = [number intValue]; number = [NSNumber numberWithInt:value + 1]; user.unreadMessages = number; ,它在运行测试之前断言了这个功能。您也可以考虑这一点。