Я пытаюсь добавить объект Spherocylinder в массив. После этого я хотел бы проверить его в junit, чтобы убедиться, что объект был успешно добавлен в массив. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь запустить свой тест junit, я получаю ошибку исключения вне пределов. Вот код из моего метода.
public class SpherocylinderList {
//instance variables.
private String listName;
private Spherocylinder[] sList;
private int numberOfSpherocylinders;
/**
*Constructor for SpherocylinderList.
* @param listNameIn - incoming objects.
* @param sListIn - name of list.
* @param numberOfSpherocylindersIn - number of objects.
*/
public SpherocylinderList(String listNameIn, Spherocylinder[] sListIn,
int numberOfSpherocylindersIn) {
listName = listNameIn;
sList = sListIn;
numberOfSpherocylinders = numberOfSpherocylindersIn;
}
/**
* Method to return total number of Spherocylinders.
* @return numberOfSpherocylinders - total number of ojbects.
*/
public int numberOfSpherocylinders() {
return numberOfSpherocylinders;
}
public void addSpherocylinder(String labelIn, double radiusIn,
double cylinderHeightIn) {
Spherocylinder s = new Spherocylinder(labelIn, radiusIn,
cylinderHeightIn);
sList[numberOfSpherocylinders] = s;
numberOfSpherocylinders++;
}
и вот мой метод испытаний Junit.
@Test public void addSpherocylinderTest() {
Spherocylinder s1 = new Spherocylinder("Small Example", 0.5, 0.25);
Spherocylinder s2 = new Spherocylinder("Medium Example", 10.8, 10.1);
Spherocylinder s3 = new Spherocylinder("Large Example", 98.32, 99.0);
Spherocylinder[] sList = {s1, s2, s3};
SpherocylinderList s = new SpherocylinderList("test", sList, sList.length);
s.addSpherocylinder("test2", 10.9, 10.2);
Assert.assertEquals(4, s.numberOfSpherocylinders());
}
Я получаю ошибку
java.lang.ArrayIndexOutofBoundsException: 3
Когда я запускаю тест. Как правильно проверить добавление объекта? Я также хочу добавить, что я не могу использовать ArrayList.