unit-testing - JUnit 参数化 @BeforeAll
问题描述
我是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
}
解决方案
推荐阅读
- python - 使用 OpenCV 比较图像
- database - 哪个是正确的基数表示法?
- python - 如何使用附加功能和版本说明符 pip install -e?
- javascript - 仅当可拖动容器有溢出时,jquery ui 拖放元素在拖动到 droppables 时被切断
- vuejs2 - 强制重新计算到 Vue 计算属性?
- javascript - 如何创建在 switch case 中检测特殊字符的逻辑(错误处理)
- c++ - 带指针的 C++ 双向链表:类的对象构造不正确
- html - 智能手机上的 SVG 动画不流畅
- windows - 如果发件人是原始来源,如何有条件地在冒泡事件中运行代码?(UWP 应用)
- python - 使用 python 创建 midi 文件或安装 midiutil