gpt4 book ai didi

java - JUnit 测试创建相同的数组而不是随机数组

转载 作者:行者123 更新时间:2023-11-28 21:03:03 26 4
gpt4 key购买 nike

我正在创建一个 JUnit,它应该每次都生成一个随机大小的数组,其中包含随机整数。之后创建数组的副本,并将原始数组作为参数输入到我的合并排序数组中,并在使用 Arrays.sort() 方法对数组副本进行排序时进行排序。然后将两个数组进行比较,看是否相同。

代码如下:

import java.util.Arrays;
import java.util.Random;
import static org.junit.Assert.assertArrayEquals;
import org.junit.Before;
import org.junit.Test;

public class Mergesort_3wayTest {

private int[] toSort;
private static int SIZE;
private static int MAX;
private static int tests = 20000;

@Before
public void setUp() throws Exception {
Random generator = new Random();
SIZE = generator.nextInt(30) + 1;
MAX = generator.nextInt(30) + 1;
toSort = new int[SIZE];
for (int i = 0; i < toSort.length; i++) {
toSort[i] = generator.nextInt(MAX);
}
}

@Test
public void itWorksRepeatably() {
for (int i = 0; i < tests; i++) {
System.out.println("1 - " + Arrays.toString(toSort));
int[] sorted = new int[toSort.length];
System.arraycopy(toSort, 0, sorted, 0, toSort.length);
Arrays.sort(sorted);

Mergesort_3way.mergesort(toSort);

System.out.println("2 - " + Arrays.toString(toSort));

assertArrayEquals(toSort, sorted);
}
}
}

我可以从我插入的 println 中清楚地看到只创建了一个数组,并且测试一直在运行以检查那个数组,但我认为它每次都会创建一个随机数组显然不是这样。

所以我的问题是,为什么每次运行 assertArrayEquals(toSort, sorted) 时我都猜到为什么只创建了一个数组,它会重新开始。

我相信它与全局变量有关,但我不太确定...

最佳答案

您正在您的测试方法中循环。设置方法将在您的测试方法之前被调用一次,但它不会在每次循环迭代开始时自动运行。您希望它如何?

每次从头开始运行测试时,它应该创建一个不同的随机数组,但是测试运行 的 20000 次迭代都将处理同一个数组,因为没有什么可以重新创建它.如果您希望在您的测试方法中发生某些事情,您需要自己编写。

关于java - JUnit 测试创建相同的数组而不是随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com