java - 如何处理测试用例中 Set 的随机顺序?

标签 java unit-testing

在我的测试用例中,我使用 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/

相关文章:

c# - 使用起订量,System.InvalidCastException : Unable to cast object of type 'CaSTLe.Proxies.ObjectProxy' to type

unit-testing - 如何测试 Guice AbstractModule 的实现?

c# - 摆脱单元测试对 StreamReader/FileStream 的依赖的好方法是什么?

javascript - Stryker 和 Jest 的麻烦

java - 为什么 BufferedReader.read(char[]) 似乎跳过字符,而 read() 却没有?

java - 在 Java 9 模块中找不到 Derby 驱动程序

java - 初始化几个实现相同接口(interface)的不同类

java - 如何从数据库获取 spring-logback 的路径

java - 使用Rxjava作为EventBus时如何从事件中获取参数

python - 如何为此方法编写单元测试