Java 需要JUnit测试方面的帮助吗

Java 需要JUnit测试方面的帮助吗,java,unit-testing,junit,Java,Unit Testing,Junit,我是JUnit的新手,所以有点麻烦。我目前正在运行Juint4,我正在尝试编写一个测试,该测试被认为是失败的,但它仍然以成功的方式通过。我需要你的帮助,因为我觉得我写的这些都是正确的,但它们并没有按预期工作。这是我的主要课程: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class PrimeNumbers implements Iterable<Integer&

我是JUnit的新手,所以有点麻烦。我目前正在运行Juint4,我正在尝试编写一个测试,该测试被认为是失败的,但它仍然以成功的方式通过。我需要你的帮助,因为我觉得我写的这些都是正确的,但它们并没有按预期工作。这是我的主要课程:

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();
    }

}
import java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
公共类素数实现了Iterable{
private List primes=new ArrayList();
/*
*创建n个素数的列表
*
*@param n-要计算的素数为负
*参数为零
*/
公共无效计算(整数n){
int count=1;//素数的计数
int number=2;//测试素数的数
布尔isPrime;//这个数是素数吗

而(count看看这两行:

List<Integer> primeList = new ArrayList<Integer>();
...
Iterator<Integer> primeIterator = primeList.iterator();
…用这个

Iterator<Integer> primeIterator = prime.iterator();

没有任何东西告诉测试显式失败,您确定正在执行的代码确实执行了包含
assertTrue(“不正确”,primeIterator.equals(primeArray[i]);
的行吗?
Iterator<Integer> primeIterator = primeList.iterator();
Iterator<Integer> primeIterator = prime.iterator();
@Test
public void test() {
    //instantiate prime object, create primes list, and iterator
    PrimeNumbers prime = new PrimeNumbers();

    int n = 8;
    int unexpectedPrimeNumber = 19;

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

    // gather the generated prime numbers into a list for easier assertion
    List<Integer> primeList = new ArrayList<>();
    prime.iterator().forEachRemaining(integer -> primeList.add(integer));

    assertEquals("Should contain " + n + " prime numbers!", n, primeList.size());
    assertFalse("Should not contain the unexpected prime number: " + unexpectedPrimeNumber, primeList.contains(unexpectedPrimeNumber));
}