2015-10-20 93 views
0

我有8个测试用例,其中每个测试用例都使用不同的文件。如何从包含文件路径的.properties文件中获取特定文件。一些测试用例如下所示:如何从java JUnit中的.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文件中,并可以从中读取。我如何在每个测试用例中获得特定的文件路径?

+0

第一次在'java junit properties'上搜索google时发现了[this post](http://stackoverflow.com/questions/1557562/does-junit-support-properties-files-for-tests) –

回答

0

使用@Parameterized runner运行JUnit测试可让您使用不同的输入运行同一测试的多个迭代。

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

您至少需要JUnit 4.11才能使用Parameterized

2

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

+0

正确。我会建议把测试文件放在test/resources文件夹中。如果你问我,将文件名(或资源名称)直接放在测试方法中不是一个坏主意,因为否则必须搜索属性文件以找出哪个文件失败。其中,顺便说一句,也是一个好的测试方法名称的论点;-) –

相关问题