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