I have the following code that reads data from a csv file that I am trying to write a unit test for. I am unsure of how to go about it.
public class BudgetTags implements BudgetTagsList{
    // State variables
    private Set<String> tags = new TreeSet<>();
    private String tag_file_path;
    public BudgetTags(String tag_file_path){
        //Retrieve tags from tag file
        this.tag_file_path = tag_file_path;
        this.retrieveTags();
    }
public void retrieveTags() {
        String line = "";
        try{
            // Begin reading each line
            BufferedReader br = new BufferedReader(new FileReader(this.tag_file_path ));
            while((line = br.readLine()) != null){
                String[] row = line.split(",");
                this.tags.add(row[0]); //Assume correct file format
            }
            br.close();
        } catch (IOException e){
            System.out.println("Fatal exception: "+ e.getMessage());
        }
    }
}
Note that the method retrieveTags();  is not allowing me to specify an additional FileNotFoundException since it extends IOException. It is being tested in the following manner:
@Test
    @DisplayName("File name doesn't exist")
    void testRetrieveTag3() {
        String path = "test\\no_file.csv";
        //Instantiate new tags object
        BudgetTags tags = new BudgetTags(path);
        IOException thrown = assertThrows(IOException.class, () -> tags.retrieveTags());
    }
The variable path does not exist so I am expecting the test to catch the IOException, (although I would prefer a FileNotFoundException) . When I run this particular test, I receive an AssertionFailedError How can I restructure my test so that it catches the FileNotFoundException when a new tags object is instantiated, since retrieveTags() is called when a new tags object is generated?
The method retrieveTags() will not allow me to specify
 
     
    