为Java代理和检测库的代码创建单元测试的标准方法是什么。我使用Byte Buddy框架创建了一个Java代理,用于在Web应用程序之上开发一个分析器,现在我想为这个代理编写JUnit测试用例。
答案 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;
,它在运行测试之前断言了这个功能。您也可以考虑这一点。