我是JUnit的初学者,在学习它时遇到了问题。我进行了很多搜索,但仍然找不到答案。
我正在使用的JUnit Jupiter版本是5.3.0-M1。
我正在对某些排序算法进行测试。我想测试它们是否正确,以及在不同长度的不同阵列上的性能。这是我的解决方法。
@BeforeAll
生成一个随机的未排序数组,例如source
和一个已排序的target
数组。
@BeforeEach
将未排序的source
复制到新数组中,作为inputs
准备进行测试。
每个@Test方法对inputs
数组进行排序并将其与target
进行比较,因此我知道它是否正确,IDE会告诉我它花费了多少时间。
问题是:我每次必须手动更改length
,然后再次进行测试。
我想知道是否有一种方法可以设置测试,因此它将针对我设置的每个不同长度进行测试。
例如,将[16,32,64,...]之类的数组作为我要测试的不同长度传递。
我知道我可以将参数传递给@Test方法,但是随后我必须在每个@Test中多次生成source
和target
。
(对不起,我的英语不好,我希望我已经足够清楚地解释了这个问题。)
这是我的测试班级:
class SortingTest {
static int length = 512; // manually change every time.
// static int length = 1024;
// static int length = 2048;
// static int length = 4096;
static int[] source;
static int[] target;
static int[] inputs;
@BeforeAll
static void beforeAllSort() {
source = MintArray.generateIntArray(length);
target = new int[length];
inputs = new int[length];
System.arraycopy(source, 0, target, 0, source.length);
Arrays.sort(target);
System.out.println("[SORT] Array Length : [" + length + "]");
System.out.println("[SORT] Source Array : " + Arrays.toString(source));
System.out.println("[SORT] Target Array : " + Arrays.toString(target));
}
@BeforeEach
void beforeEachSort() {
System.arraycopy(source, 0, inputs, 0, source.length);
System.out.println();
}
@Test
@DisplayName("Bubble Sort")
void bubbleSort() {
System.out.println("[SORT] Bubble Sort");
inputs = new BubbleSort().bubbleSort(inputs);
assertArrayEquals(inputs, target);
}
@Test
@DisplayName("Insertion Sort")
void insertionSort() {
System.out.println("[SORT] Insertion Sort");
inputs = new InsertionSort().insertionSort(inputs);
assertArrayEquals(inputs, target);
}
@Test
.......more sort
}