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

Java/Scala test包是否需遵循main包反向域名前缀结构规范?

Java/Scala 项目 test 目录包结构规范结论

正式项目必须对齐 main 目录的完整包层级,保留反向域名前缀,不能省略该层级。

通用约定的目录结构

所有基于Maven/Gradle构建的Java/Scala项目,main目录的标准结构是全行业统一的:

main/
  java(或scala)/
    反向域名前缀(例:com.yourcompany.project)/
      业务模块包(例:foo/)

对应的test目录必须完全镜像main的包层级,合规结构是你提到的第一种:

test/
  java(或scala)/
    反向域名前缀(和main下的前缀完全一致,例:com.yourcompany.project)/
      对应模块的测试代码(例:fooTest/,多数团队会直接建和main同名的foo包,和业务类一一对应,查找更方便)

不允许省略反向域名前缀的核心原因

  • 包访问权限限制:main目录下如果存在包级可见的类、方法,测试类只有在同包名下才能直接访问,省略前缀会导致包名不匹配,直接编译报错,连测试都跑不起来。
  • 构建工具与框架的默认规则:Maven、Gradle的test任务,JUnit、TestNG、ScalaTest等测试框架,以及Spring等业务框架的测试扫描逻辑,默认都是按和main对齐的包结构识别用例,省略层级需要额外写大量自定义扫描配置,平白增加维护成本。
  • 协作共识:所有Java/Scala开发者默认会按照main的包路径查找对应模块的测试用例,省略前缀会导致目录结构混乱,大幅提升后续维护的找代码成本。

你提到的第二种省略反向域名前缀的写法,仅可能出现在完全不需要协作的个人极小玩具项目里,正式商用、团队协作的项目都不会采用这种结构,会给后续开发埋很多没必要的坑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:09:34