Java JUnit测试ArrayList元素是否为';不重复

Java JUnit测试ArrayList元素是否为';不重复,java,junit,Java,Junit,使用此方法,使用调用的方法getRandomInt中的随机值生成ArrayList。我将断言什么来创建一个测试ArrayList不包含重复项的测试方法 public static int getRandom(int min, int max) { return random.nextInt((max - min) + 1) + min; } public static ArrayList<Integer> getRandomIntegers(int size, int m

使用此方法,使用调用的方法getRandomInt中的随机值生成ArrayList。我将断言什么来创建一个测试ArrayList不包含重复项的测试方法

public static int getRandom(int min, int max) {

    return random.nextInt((max - min) + 1) + min;
}

public static ArrayList<Integer> getRandomIntegers(int size, int min, int max) {

    ArrayList<Integer> number = new ArrayList<Integer>();

    while (number.size() < size) {
        int random = getRandom(min, max);

        if(!number.contains(random)) {
            number.add(random);
        }
    }

    return number;
} 
publicstaticintgetrandom(intmin,intmax){
返回random.nextInt((max-min)+1)+min;
}
公共静态ArrayList getRandomIntegers(整数大小、整数最小值、整数最大值){
ArrayList编号=新的ArrayList();
while(number.size()
您可以将元素放入一个集合中,然后比较大小

assert new HashSet(list).size() == list.size()

另一种方法是用从最小值到最大值的
整数填充
数组列表
,然后调用
Collections.shuffle(aList)

事实上,您必须声明更多内容。
要检查方法的实际行为,您确实应该从返回的列表中断言:

  • 该列表具有预期的大小
Assert.assertEquals(size,list.size())

  • 该列表不包含dup
Assert.assertEquals(新的HashSet(list.size(),actualList.size())

  • 列表元素在传递到的最小-最大范围内
用于(长v:list){

Assert.assertTrue(v“+”不在预期范围内),v>=min&&v您可以执行此操作以检查是否没有重复项

assertEquals(number.size(),number.stream().distinct().collect(Collectors.toList()).size());
其中
number
是您的阵列列表。 用这个


import static junit.framework.Assert.assertEquals

为什么要使用
ArrayList
Set
HashSet
)将保证您的唯一性。这将是相当低效的。夸张的:
getRandomIntegers(3,Integer.MIN\u值,Integer.MAX\u值)
这个答案并不完美,但对于不太极端的例子可能有用。我想在这些极端情况下,阈值可以定义为…。@M.leRutte,
getRandomIntegers(Integer.MAX_值-1,Integer.MIN_值,Integer.MAX_值)怎么样
?这是错误的。数字可以包含重复项,但其大小可以相同。Nit:signature is assertEquals(预期,实际)@Ajak6您所说的是错误的。如果数字包含重复项,则其大小肯定会增加。此解决方案有效