junit用有限的属性断言java中的两个实例
我正在开发一个验证系统来比较同一类的两个实例
我使用反射断言来比较实例的属性。但有时我们不能期望某些属性的精确值,如系统生成时间、随机数等
示例:考虑一个具有如下属性的类:
类别=>;交易详情
属性=>;1:transactionID 2:交易状态 3:交易时间
交易详情的实际实例
1: transactionID : 987DFGAS876
2: transactionStatus : SUCCESS
3: transactionTime : 2015-10-15T15:46:53.378+05:30
交易详情的预期实例
1: transactionID : 987DFGAS876
2: transactionStatus : SUCCESS
3: transactionTime : 2015-10-15T15:39:29.127+05:30
断言的结果为=>错误因为时间不同
所以,如果我给出我预期的例子,如下所示
具有有限(必需)值的TransactionDetails的预期实例
1: transactionID : 987DFGAS876
2: transactionStatus : SUCCESS
断言的结果为=>false因为时间差(null&;2015-10-15T15:46:53.378+05:30)
因此,在我的例子中,我只需要将强化2值与实际实例进行比较,需要跳过属性 用户不希望断言这些值
为了实现这一点,我正在进行反射以获取所有属性,并用实际实例检查预期实例中的丰富属性
但这将导致大型实例的性能问题。有什么简单的吗 这个需求的解决方案
请分享您的想法来解决这个问题,提前谢谢
# 1 楼答案
可以标记要与自定义注释进行比较的字段。然后,您可以得到是否还应通过反射比较字段:
# 2 楼答案
是否有具体的反思需要?只需在有限的字段子集上生成
equals
和hashcode
方法检查即可在eclipse中:菜单源>;生成hashcode()和equals()。。。然后检查要比较的字段
这样可以避免由于反射而导致的性能问题