我有以下情况:我的类保留了两个对象的标识集。
这些集合逐渐填充了一些实例,在测试用例中,它们填充了模拟。
然后我的类有一个调用,它先处理一个集合的内容,然后再处理另一个集合的内容。这就是我正在测试的呼叫。
处理集合的顺序很重要。在集合中处理单个对象的顺序并不重要,事实上,这取决于如何将身份散列分配给集合中的模拟。
所以在我的情况下,我有一个偏序:所有这些对象都必须在处理任何对象之前被处理。
问题是,我如何在Mockito中表达它?inOrder()失败了,因为我必须指定对象的确切顺序,而这不是恒定的。
发布于 2021-10-15 14:26:05
为了讨论在使用Mockito.inOrder时如何处理集合和映射,我们必须区分4种情况,具体取决于
这导致了4种组合或4种可能的情况。
当包含被测试方法的类具有一个set或map作为类变量时,如果该方法访问或修改它,则可以将其视为该方法的输入,如果该方法设置了它,则可以将其视为输出。但是如果它是没有setter或getter的私有或受保护类变量,则可能需要使用反射在调用方法之前使用mock或包含一个或多个mock的set或map来设置它,或者在调用方法之后获取并验证它。
https://stackoverflow.com/questions/31145765
复制相似问题