diff --git a/core-java-io/pom.xml b/core-java-io/pom.xml
index cf3e950cb8..efa32b8e3e 100644
--- a/core-java-io/pom.xml
+++ b/core-java-io/pom.xml
@@ -154,6 +154,12 @@
async-http-client
${async-http-client.version}
+
+ com.opencsv
+ opencsv
+ ${opencsv.version}
+ test
+
@@ -247,7 +253,7 @@
1.13
0.6.5
0.9.0
-
+ 4.1
3.6.1
1.7.0
diff --git a/core-java-io/src/test/java/com/baeldung/csv/ReadCSVInArrayUnitTest.java b/core-java-io/src/test/java/com/baeldung/csv/ReadCSVInArrayUnitTest.java
new file mode 100644
index 0000000000..2593eee82b
--- /dev/null
+++ b/core-java-io/src/test/java/com/baeldung/csv/ReadCSVInArrayUnitTest.java
@@ -0,0 +1,106 @@
+package com.baeldung.csv;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Scanner;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.opencsv.CSVReader;
+
+public class ReadCSVInArrayUnitTest {
+ public static final String COMMA_DELIMITER = ",";
+ public static final String CSV_FILE = "src/test/resources/book.csv";
+ public static final List> EXPECTED_ARRAY = Collections.unmodifiableList(new ArrayList>() {
+ {
+ add(new ArrayList() {
+ {
+ add("Mary Kom");
+ add("Unbreakable");
+ }
+ });
+ add(new ArrayList() {
+ {
+ add("Kapil Isapuari");
+ add("Farishta");
+ }
+ });
+ }
+ });
+
+ @Test
+ public void givenCSVFile_whenBufferedReader_thenContentsAsExpected() throws IOException {
+ List> records = new ArrayList>();
+ try (BufferedReader br = new BufferedReader(new FileReader(CSV_FILE))) {
+ String line = "";
+ while ((line = br.readLine()) != null) {
+ String[] values = line.split(COMMA_DELIMITER);
+ records.add(Arrays.asList(values));
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ for (int i = 0; i < EXPECTED_ARRAY.size(); i++) {
+ Assert.assertArrayEquals(EXPECTED_ARRAY.get(i)
+ .toArray(),
+ records.get(i)
+ .toArray());
+ }
+ }
+
+ @Test
+ public void givenCSVFile_whenScanner_thenContentsAsExpected() throws IOException {
+ List> records = new ArrayList>();
+ try (Scanner scanner = new Scanner(new File(CSV_FILE));) {
+ while (scanner.hasNextLine()) {
+ records.add(getRecordFromLine(scanner.nextLine()));
+ }
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ for (int i = 0; i < EXPECTED_ARRAY.size(); i++) {
+ Assert.assertArrayEquals(EXPECTED_ARRAY.get(i)
+ .toArray(),
+ records.get(i)
+ .toArray());
+ }
+ }
+
+ private List getRecordFromLine(String line) {
+ List values = new ArrayList();
+ try (Scanner rowScanner = new Scanner(line)) {
+ rowScanner.useDelimiter(COMMA_DELIMITER);
+ while (rowScanner.hasNext()) {
+ values.add(rowScanner.next());
+ }
+ }
+ return values;
+ }
+
+ @Test
+ public void givenCSVFile_whenOpencsv_thenContentsAsExpected() throws IOException {
+ List> records = new ArrayList>();
+ try (CSVReader csvReader = new CSVReader(new FileReader(CSV_FILE));) {
+ String[] values = null;
+ while ((values = csvReader.readNext()) != null) {
+ records.add(Arrays.asList(values));
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ for (int i = 0; i < EXPECTED_ARRAY.size(); i++) {
+ Assert.assertArrayEquals(EXPECTED_ARRAY.get(i)
+ .toArray(),
+ records.get(i)
+ .toArray());
+ }
+ }
+}
diff --git a/core-java-io/src/test/resources/book.csv b/core-java-io/src/test/resources/book.csv
new file mode 100644
index 0000000000..b7c4b80499
--- /dev/null
+++ b/core-java-io/src/test/resources/book.csv
@@ -0,0 +1,2 @@
+Mary Kom,Unbreakable
+Kapil Isapuari,Farishta
\ No newline at end of file