You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:通过定位features目录获取项目名的方案是否可行

方案可行性分析及优化实现

你的方案完全可行,而且比原有逻辑更健壮,能适配更多层级的目录结构。

原代码的局限性

原来的代码通过取路径分割后的最后一个元素获取项目名称,仅在.feature文件直接位于项目根目录下时有效。一旦文件嵌套在features目录下的多层子文件夹中,就会错误地返回.feature文件名而非项目名称。

你的方案优势

基于features目录定位的逻辑,只要项目结构遵循项目代码放在features目录的直接子目录下的规则,就能稳定获取到项目名称,不受后续子文件夹层级的影响。

优化后的代码实现

private String getProjectName(Scenario scenario) {
    String[] pathSegments = Path.of(scenario.getUri()).toUri().getPath().split("/");
    // 过滤空字符串,避免路径开头/导致的空元素干扰
    List<String> validSegments = Arrays.stream(pathSegments)
                                      .filter(segment -> !segment.isEmpty())
                                      .toList();
    
    for (int i = 0; i < validSegments.size(); i++) {
        if ("features".equals(validSegments.get(i))) {
            if (i + 1 < validSegments.size()) {
                return validSegments.get(i + 1);
            }
            throw new IllegalArgumentException("路径无效:'features'目录下未找到项目文件夹");
        }
    }
    throw new IllegalArgumentException("路径无效:未找到'features'目录");
}

注意事项

  • 增加了空元素过滤,避免路径开头的/导致分割后出现空字符串,影响索引定位
  • 添加了异常处理,在找不到features目录或features后无后续目录时抛出明确异常,便于排查问题

内容的提问来源于stack exchange,提问作者Kermi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:15:30