2013-10-31 48 views
0

在我的基於Java + Spring後端的項目中,我已將一組權限屬性提取到.properties file。我如何驗證所請求的參數是否存在於測試中的屬性文件中?集成測試以驗證彈簧屬性文件中的值

有沒有辦法將這個屬性文件集成到我的集成測試中?

屬性文件:

#Viewable Report Filter, Ordered list of states to be viewed in each step of the web-gui 
TMSViewableReportFilter.allStates.verify=ONHOLD_HR,VERIFY,PREPARE,CONFIRM,CONFIRM_HR,CONFIRM_MGR,CONFIRM_RM,AGRESSO_IN_PROGRESS,CLOSED 
TMSViewableReportFilter.allStates.manager=PREPARE,ONHOLD_FINANCE,ONHOLD_HR,AGRESSO_ERROR,CONFIRM,CONFIRM_HR,CONFIRM_MGR,CONFIRM_RM,AGRESSO_IN_PROGRESS,CLOSED 
TMSViewableReportFilter.allStates.prepare=CONFIRM,CONFIRM_HR,CONFIRM_MGR,CONFIRM_RM,ONHOLD_FINANCE,CLOSED 
TMSViewableReportFilter.allStates.confirm=CONFIRM_MGR,CONFIRM_HR,CONFIRM_RM,ONHOLD_HR,CLOSED 


#Handleable Report Filter, Ordered list of states to be viewed in each step of the web-gui 
TMSHandleableReportFilter.allStates.verify=APPROVE,ONHOLD_EMPLOYEE,ONHOLD_FINANCE,AGRESSO_ERROR 
TMSHandleableReportFilter.allStates.manager=VERIFY 
TMSHandleableReportFilter.allStates.prepare=PREPARE,ONHOLD_HR 
TMSHandleableReportFilter.allStates.confirm.hr=CONFIRM_HR 
TMSHandleableReportFilter.allStates.confirm.mgr=CONFIRM_MGR,CONFIRM_HR 
TMSHandleableReportFilter.allStates.confirm.rm=CONFIRM_RM 

以下是我訪問值:

@Autowired 
    public TMSHandleableReportService(
      @Value("${TMSHandleableReportFilter.allStates.verify}") String[] verifyStringStates, 
      @Value("${TMSHandleableReportFilter.allStates.manager}") String[] managerStringStates, 
      @Value("${TMSHandleableReportFilter.allStates.prepare}") String[] prepareStringStates, 
      @Value("${TMSHandleableReportFilter.allStates.confirm.hr}") String[] confirmHRStringStates, 
      @Value("${TMSHandleableReportFilter.allStates.confirm.mgr}") String[] confirmMGRStringStates, 
      @Value("${TMSHandleableReportFilter.allStates.confirm.rm}") String[] confirmRMStringStates) { 

     handleStates = new HashMap<String, List<TMSState>>(); 


     handleStates.put(
       "verify", 
       loadTMSStateFromStringArray(verifyStringStates, 
         "TMSViewableReportFilter.allStates.verify")); 

     handleStates.put(
       "manager", 
       loadTMSStateFromStringArray(managerStringStates, 
         "TMSViewableReportFilter.allStates.manager")); 

     handleStates.put(
       "prepare", 
       loadTMSStateFromStringArray(prepareStringStates, 
         "TMSViewableReportFilter.allStates.prepare")); 
     handleStates.put(
       "confirm.hr", 
       loadTMSStateFromStringArray(confirmHRStringStates, 
         "TMSViewableReportFilter.allStates.confirm.hr")); 
     handleStates.put(
       "confirm.mgr", 
       loadTMSStateFromStringArray(confirmMGRStringStates, 
         "TMSViewableReportFilter.allStates.confirm.mgr")); 
     handleStates.put(
       "confirm.rm", 
       loadTMSStateFromStringArray(confirmRMStringStates, 
         "TMSViewableReportFilter.allStates.confirm.rm")); 

驗證是否在屬性文件中存在的關鍵是足夠的。即驗證TMSHandleableReportFilter.allStates.verify,TMSHandleableReportFilter.allStates.prepare的出現......等。

+0

注入屬性值進入單元測試和寫測試方法,以確認它們是有效的? – chrylis

+0

我想驗證這些值是在屬性文件中,即我想驗證集成測試中數據的存在,我不想使用數據單元測試我的課程已經完成 –

+2

您需要做的只是爲您的測試使用包含您的屬性文件的應用程序上下文,之後您可以像使用服務一樣通過@Value自動裝載屬性並檢查它們 – mvb13

回答

0

「在我的基於Java + Spring後端的項目中,我已經提取了一個.properties文件的權限屬性列表。我是否驗證所請求的參數是否存在於測試中的屬性文件中?「 我的答案是 - 您不需要這樣做,一旦Spring無法從屬性文件自動裝載值,服務器將無法啓動(或任何其他集成te。無需驗證。