不确定为什么 JUnit 测试会成功返回,而它是故意失败的

Not sure my why JUnit test is coming back successful, when it's intentionally meant to be a failure

我是 JUnit 的新手,如果我问的太简单了,我很抱歉。我在网上搜索过,我相信当涉及到 assertTrue() 方法时,我所做的一切都是正确的。然而,当我 运行 这个测试时,它返回它通过了,而它是故意要失败的。如果我做错了什么,请告诉我。我目前正在使用 Intellij IDEA 和 JUnit4。这是我的主要 class:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class PrimeNumbers implements Iterable<Integer> {
    private List<Integer> primes = new ArrayList<Integer>();

    /*
     * creates a list of n prime numbers
     *
     * @param n - the number of primes to compute silently treats negative
     * arguments as zero
     */
    public void computePrimes(int n) {
        int count = 1; // count of primes
        int number = 2; // number tested for primeness
        boolean isPrime; // is this number a prime

        while (count <= n) {
            isPrime = true;
            for (int divisor = 2; divisor <= number / 2; divisor++) {
                if (number % divisor == 0) {
                    isPrime = false;
                    break; // for loop
                }
            }
            if (isPrime && (number % 10 != 9)) { // THIS IS THE FAULT!!!
                primes.add(number);
                count++;
            }
            number++;
        }
    }

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

    @Override
    public String toString() {
        return primes.toString();
    }

}

这是我的测试 class:

import org.junit.Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.*;

public class PrimeNumbersTest {

    @Test
    public void test(){

        //instantiate prime object, create primes list, and iterator
        PrimeNumbers prime = new PrimeNumbers();
        List<Integer> primes = new ArrayList<Integer>();
        Iterator<Integer> primeIterator = primes.iterator();

        //array holding 19 so I can compare the objects
        int[] primeArray = new int[]{2,3,5,7,11,13,17,19};
        int i = 0;
        int n = 8;

        //call the method
        prime.computePrimes(n);

        //loop to iterate through the list and then check last item if it is equal to 19
        while(primeIterator.hasNext()){
            if(!(primeIterator.equals(primeArray[i]))) {
                assertTrue("incorrect", primeIterator.equals(primeArray[i]));
            }
            i++;
            primeIterator.next();
        }
    }
}

谢谢大家!

我猜 while 循环的主体永远不会执行,因为 primeIterator 属于一个空的 List.