2015-10-20 94 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文件夾中。如果你問我,將文件名(或資源名稱)直接放在測試方法中不是一個壞主意,因爲否則必須搜索屬性文件以找出哪個文件失敗。其中,順便說一句,也是一個好的測試方法名稱的論點;-) –

相關問題