在使用JUnit进行断言时,可能会遇到使用ArrayList和Arrays.asList()时出现的错误。这是因为Arrays.asList()返回的是一个固定大小的List,不支持添加或删除元素的操作。下面是一个包含代码示例的解决方法:
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayListTest {
@Test
public void testArrayList() {
List list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains("apple"));
list.remove("banana");
Assert.assertEquals(2, list.size());
Assert.assertFalse(list.contains("banana"));
}
@Test
public void testArraysAsList() {
List list = new ArrayList<>(Arrays.asList("apple", "banana", "orange"));
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains("apple"));
list.remove("banana"); // 会抛出UnsupportedOperationException异常
Assert.assertEquals(2, list.size());
Assert.assertFalse(list.contains("banana"));
}
}
在上面的代码中,我们分别测试了使用ArrayList和Arrays.asList()创建的List,通过断言来验证其元素个数和是否包含特定元素。然后尝试在Arrays.asList()创建的List上进行删除操作,发现会抛出UnsupportedOperationException异常。
为了解决这个问题,我们可以在Arrays.asList()返回的List上进行一次新的ArrayList的构造,如下所示:
List list = new ArrayList<>(Arrays.asList("apple", "banana", "orange"));
这样就可以使用ArrayList的所有方法,包括添加和删除元素。