如何从java JUnit中的.properties文件中获取文件名?

时间:2015-10-20 13:45:41

标签: java junit junit4 properties-file

我有8个测试用例,其中每个测试用例都使用不同的文件。如何从.properties文件中获取包含文件路径的特定文件。一些测试用例如下所示:

@Test
    public void testIfColDataReadIsCorrect() throws FileNotFoundException{

        obj.readExcelToGetData("D:/ExcelTestFiles/testExcelWithAllColData.xlsx");
        rowObj= obj.getRowRecord();
        assertEquals(rowObj.getName(), TEST_NAME);
        assertEquals(rowObj.getId(), TEST_id);
        assertEquals(rowObj.getDate(), TEST_DATE);
        assertEquals(rowObj.getMessage(), TEST_MSG);
        assertEquals(rowObj.getPage(), TEST_PAGE);
        assertEquals(rowObj.getType(), TEST_TYPE);
        assertEquals(rowObj.getLikeCount(),TEST_LIKECOUNT);
        assertEquals(rowObj.getShareCount(), TEST_SHARECOUNT);
        assertEquals(rowObj.getCommentCount(), TEST_COMMENTCOUNT);
    }
    @Test
    public void testWhenNameColDoesNotExists() throws FileNotFoundException{
        //FacebookDataExtraction obj= new FacebookDataExtraction();
        //FacebookFields rowObj=new FacebookFields();
        obj.readExcelToGetData("D:/ExcelTestFiles/testExcelWithNoNameCol.xlsx");
        rowObj= obj.getRowRecord();
        assertEquals(rowObj.getName(), null);
        assertEquals(rowObj.getId(), TEST_id);
        assertEquals(rowObj.getDate(), TEST_DATE);
        assertEquals(rowObj.getMessage(), TEST_MSG);
        assertEquals(rowObj.getPage(), TEST_PAGE);
        assertEquals(rowObj.getType(), TEST_TYPE);
        assertEquals(rowObj.getLikeCount(),TEST_LIKECOUNT);
        assertEquals(rowObj.getShareCount(), TEST_SHARECOUNT);
        assertEquals(rowObj.getCommentCount(), TEST_COMMENTCOUNT);

    }

我认为这不是直接输入方法readExcelToGetData()的文件路径的最佳做法。在浏览了某些帖子之后,我发现文件可以放入.properties文件并可以从中读取。如何在每个测试用例中获取特定的文件路径?

2 个答案:

答案 0 :(得分:2)

您可以通过ClassLoader从类路径加载文件。例如。 :this.getClass().getClassLoader().getResourceAsStream("myFiles.properties"); 因此,根据您的IDE,您可以将属性文件放入源文件或资源文件夹中。

答案 1 :(得分:0)

使用@Parameterized运行器运行JUnit测试允许您使用不同的输入运行相同测试的多次迭代。

您可以从任何您想要的源读取测试参数,并在参数化测试中使用它们,而无需为每个输入复制测试方法。

至少需要JUnit 4.11来使用Parameterized