import org.junit.Test;
import java.util.*;
import java.io.*;
import java.math.BigDecimal;
import static org.junit.Assert.assertEquals;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class FibonacciTest {
private static final String FILENAME = "###############";
@Parameters
public static Collection<Object[]> data() {
Scanner s = null;
String line;
String[] values;
Collection<Object[]> check = Arrays.asList(new Object[][]{{0, new BigDecimal(0)}, {1, new BigDecimal(1)},{2, new BigDecimal(1)}});
try {
s = new Scanner(new File(FILENAME));
while (s.hasNextLine()){
int i = 3;
line = s.nextLine();
values = line.split("\\s+");
((List<Object[]>) check).add(i, new Object[][]{{0, new BigDecimal(Integer.parseInt(values[1]))}});
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int random = (int) (Math.random() * 30);
return check;
}
private int fInput;
private BigDecimal fExpected;
public FibonacciTest(int input, BigDecimal expected) {
this.fInput = input;
this.fExpected = expected;
}
@Test
public void test() {
assertEquals(fExpected, Fibonacci.fib(fInput));
}
}
Здравствуйте, я действительно новичок в тестировании JUnit и провел много исследований сегодня. Достигнуты сами собой, пробой и стрелой, но я застрял в постоянной проблеме. Я пытаюсь написать рандомизированный тест для динамического вычисления Фибоначчи. Тест выполняется с базовыми вариантами, которые добавляются вручную при проверке коллекции. Они работают. Я хочу добавить больше дел, и они контролируются файлом .txt
. Ввод тоже работает, но я не могу добавить объекты в свою коллекцию позже. Это мой подход, но он выдает java.lang.UnsupportedOperationExeption в строке 30:
((List<Object[]>) check).add(i, new Object[][]{{0, new BigDecimal(Integer.parseInt(values[1]))}});
Кастинг был сделан IntelliJ.
Много пробовал с разными возможностями для коллекций и списков, но я застрял здесь.
Спасибо за помощь.