【问题标题】:Integration test to verify values in spring properties file集成测试以验证弹簧属性文件中的值
【发布时间】:2013-10-31 09:29:26
【问题描述】:

在我基于 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"));

验证属性文件中是否存在密钥就足够了。 IE。验证 TMSHandleableReportFilter.allStates.verify、TMSHandleableReportFilter.allStates.prepare...等的发生

【问题讨论】:

  • 将属性值注入单元测试并编写测试方法以确认它们有效?
  • 我想验证这些值是否在属性文件中,即。我想在集成测试中验证数据的存在,我不想使用数据对我的类进行单元测试。这已经完成了
  • 您需要做的就是使用包含您的属性文件的测试应用程序上下文。之后,您可以像执行 Service 一样通过 @Value 自动装配属性并检查它们。
  • 我的意思是特别我所说的-将实际属性注入单元测试。将单元测试本身视为一个 bean,正如@mvb13 所解释的,将值自动连接到单元测试中的字段上。然后只需编写方法来检查值本身是否“有效”,无论这在您的上下文中意味着什么。这与编写调用服务层的测试不同,后者依赖于值。

标签: java spring testing integration-testing


【解决方案1】:

“在我基于 Java+Spring 后端的项目中,我已将权限属性列表提取到 .properties 文件中。如何验证请求的参数是否存在于测试中的属性文件中?” 我的回答是 - 你不需要这样做,一旦 Spring 无法从属性文件中自动装配值,服务器将不会启动(或任何其他集成 te。无需验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多