使用 JMockit 模拟 class 中的 Arrays.sort() 方法
Use JMockit to mock Arrays.sort() methods in a class
我尝试模拟 Arrays.sort 方法以确保 QuickSort class 中的实现不使用 Arrays.sort。我怎样才能做到这一点?这是我的尝试,结果是 java.lang.WhosebugError
@Test
public void testQuickSort() {
Integer[] array = {3, -7, 10, 3, 70, 20, 5, 1, 90, 410, -3, 7, -52};
Integer[] sortedArray = {-52, -7, -3, 1, 3, 3, 5, 7, 10, 20, 70, 90, 410};
QuickSort<Integer> quicksort = new QuickSort<>();
new Expectations(Arrays.class) {{
Arrays.sort((Integer[]) any);
}};
quicksort.quicksort(array);
// some asserts
// assertArrayEquals(sortedArray, array);
// ...
}
你需要模拟它并将调用 Arrays.sort
的次数限制为 0
:
@Test
public void testQuickSort(@Mocked Arrays mock) {
new Expectations() {{
mock.sort((Integer[]) any);
times = 0;
}};
quicksort.quicksort(array);
}
我可以通过这种方式模拟静态方法:
new MockUp<Arrays>() {
@Mock
public void sort(Object[] o) {
System.out.println("Oh no.");
}
};
我尝试模拟 Arrays.sort 方法以确保 QuickSort class 中的实现不使用 Arrays.sort。我怎样才能做到这一点?这是我的尝试,结果是 java.lang.WhosebugError
@Test
public void testQuickSort() {
Integer[] array = {3, -7, 10, 3, 70, 20, 5, 1, 90, 410, -3, 7, -52};
Integer[] sortedArray = {-52, -7, -3, 1, 3, 3, 5, 7, 10, 20, 70, 90, 410};
QuickSort<Integer> quicksort = new QuickSort<>();
new Expectations(Arrays.class) {{
Arrays.sort((Integer[]) any);
}};
quicksort.quicksort(array);
// some asserts
// assertArrayEquals(sortedArray, array);
// ...
}
你需要模拟它并将调用 Arrays.sort
的次数限制为 0
:
@Test
public void testQuickSort(@Mocked Arrays mock) {
new Expectations() {{
mock.sort((Integer[]) any);
times = 0;
}};
quicksort.quicksort(array);
}
我可以通过这种方式模拟静态方法:
new MockUp<Arrays>() {
@Mock
public void sort(Object[] o) {
System.out.println("Oh no.");
}
};