Java JUnit黑盒/白盒测试选择排序?

Java JUnit黑盒/白盒测试选择排序?,java,junit,black-box-testing,white-box-testing,Java,Junit,Black Box Testing,White Box Testing,我试图在SelectionSort类上理解并实现blackbox/whitebox JUnit技术,但我很难理解应该采取什么方向 下面是我失败的一次尝试。我尝试从SelectionSort类中测试数组的大小,但无法识别我的方法(unsortedArray) @Test public void testUnsortedArray() { int n = 20; int[] x = new int[n]; for (int i = 0; i < 20; i++) {

我试图在SelectionSort类上理解并实现blackbox/whitebox JUnit技术,但我很难理解应该采取什么方向

下面是我失败的一次尝试。我尝试从SelectionSort类中测试数组的大小,但无法识别我的方法(unsortedArray)

@Test
public void testUnsortedArray() {
    int n = 20;
    int[] x = new int[n];
    for (int i = 0; i < 20; i++) {
        x[i] = (n);

        n--;
        i++;
    }
    SelectionSort2 a = new SelectionSort2();
    assertArrayEquals(20, a.unsortedArray(x, 20));

}
@测试
public void testUnsortedArray(){
int n=20;
int[]x=新的int[n];
对于(int i=0;i<20;i++){
x[i]=(n);
n--;
i++;
}
SelectionSort2 a=新的SelectionSort2();
assertarayequals(20,a.unsortedArray(x,20));
}
下面是我提供的SelectionSort类。非常感谢您的帮助或指导:)

公共类选择或2{
公共静态void main(字符串[]args)
{
int n=20;
int[]numArray=unsortedArray(n);//重新初始化
printArray(纽马拉伊,n);
选择器2(纽马拉伊,n);
printArray(纽马拉伊,n);
}
//为选择排序数组生成数据
公共静态int[]未排序的数组(int n){
int[]a=新的int[n];
对于(int index=0;index0;NumunSorded--){
int maxIndex=0;
对于(int-index=1;index
'assertArrayEquals'方法用于检查2个阵列。但是您的第一个参数20不是一个数组对象,这可能是失败的原因。

黑盒测试可以想象为输入输出对。你给你的程序一组输入,看看输出是否符合你的期望

所以在这种情况下,你会有这样的结果:

input: {5, 3, 1};                 expected output: {1, 3, 5}
input: {9, 7, 5, 6, 8, 34, 3, 6}; expected output: {3, 5, 6, 6, 7, 8, 9, 34}
input: {}                         expected output: {}
input: {1, 3, 5}                  expected output: {1, 3, 5}
您可以使用类似于
assertarayequals()
的方法来检查程序的输出是否符合预期

白盒测试更为复杂,因为您正在设计的测试试图通过代码执行所有可能的路径,这意味着白盒测试往往更具体于实现。老实说,我对白盒测试不是很熟悉,所以我帮不了你多少忙。我猜,针对这一点的白盒测试基本上是查看代码,并查找在执行过程中可能出现的各种角落情况。虽然您的代码看起来非常简单,但我不确定您可能会遇到哪些黑盒测试尚未涵盖的情况

对于您进行的具体测试,我认为问题在于:

assertArrayEquals(20, a.unsortedArray(x, 20));
assertarayequals()
要么将两个数组作为参数,要么将一个
String
和两个数组作为错误消息。我认为您的代码不会编译,因为您传递给它的两个参数都无效。此外,您似乎没有定义
unsortedArray(int[],int)
方法。。。您是否打算执行
选择SORT2(x,20)

一旦修复了该行,JUnit测试就应该可以工作了。评论说,至少有一行代码允许JUnit测试在我的计算机上运行


还有一件事——您说过要在SelectionSort类中测试数组的大小。为此,
assertTrue()
可能是要使用的方法,但我不确定这样的测试是否有用,因为数组大小无法更改,而且您在任何时候都不会返回新数组。

我建议您列出一个您希望类能够执行的操作列表。对于这些要求中的每一项,列出可能适用的不同情况。然后,对于需求和环境的每个组合,用Java代码编写类满足需求的含义,并将其构建为测试方法。最后,您应该使用一组测试方法,每个测试方法在一种情况下对类的行为断言一件事。
assertArrayEquals(20, a.unsortedArray(x, 20));