如果java中有多个输出,如何使用单元测试?

Vam*_*yer 2 java unit-testing fibonacci

如何测试返回斐波那契数列的类?我在这段代码中使用了迭代器。FibonacciIteratorTest 类如下。

public class FibonacciIterator implements Iterator<Integer>, Iterable<Integer>{
    private int num1;
    private int num2;
    private int num3;
    private int count;
    private int to;

    public FibonacciIterator(int to){
        this.num1 = 0;
        this.num2 = 1;
        this.to = to;
        this.count = -1;
    }

    public static Iterable<Integer> to(int num){
        return new FibonacciIterator(num);
    }

    @Override
    public Iterator<Integer> iterator(){
        return this;
    }

    @Override
    public boolean hasNext(){
        if(count < to){
            count++;
            return true;
        }
        return false;
    }

    @Override
    public Integer next(){
        if(count < 2){
            return count;
        }
        num3 = num1 + num2;
        num1=num2;
        num2=num3;
        return num3;
    }
}
Run Code Online (Sandbox Code Playgroud)

预期值应为 0 1 1 2 3 5 8 13 21 34 55,而不是 55。

class FibonacciIteratorTest {
   @Test
   void shouldReturnFibonacciNumbers(){
      FibonacciIterator fibonacciNumbers= new FibonacciIterator();
      assertEquals(55,fibonacciNumbers.to());
  }
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*til 5

考虑到您的fibonacciNumbers.to方法返回int [],您可能需要使用assertArrayEquals

   int arr[]={0,1,1,2,3,5,8,13,21,34};

    assertArrayEquals(arr, fibonacciNumbers.to(10));
Run Code Online (Sandbox Code Playgroud)

如果您的方法fibonacciNumbers.to()返回的不是 int 数组,那么请告诉我们,以便可以相应地更改答案。