在我的测试用例中,我使用 assertEquals() 进行单元测试。问题是这个断言的值来自一个 HashSet,其中的顺序是随机的。因此,每次运行测试用例时,我的断言都可能由于 HashSet 的不同字符串表示值而失败。
为了解决这个问题,我考虑在我的代码中使用 LinkedHashSet,但这似乎不是一个有效的解决方案,因为选择 LinkedHashSet 只是为了适应一些测试用例。
这是单元测试中的常见情况吗?
最佳答案
不要比较 toString()
的 HashSet<T>
,但将其与另一个(预期)进行比较 HashSet<T>
.
下面的测试会成功:
@Test
public void test() {
Set<Integer> set = new HashSet<Integer>(Arrays.asList(2, 1, 3));
Set<Integer> expected = new HashSet<Integer>(Arrays.asList(3, 2, 1));
assertEquals(set, expected);
}
关于java - 如何处理测试用例中 Set 的随机顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44787988/