创建新的Maven项目时,会创建目录src/main/java
和src/test/java
。通过一些谷歌搜索,我发现我用于测试的main
源代码必须放在src/main/java
中。但是,两个单独目录的目的是什么。对类似问题的当前答案并没有多大帮助。
答案 0 :(得分:10)
Maven和其他构建管理环境(例如gradle)基于您通过例如自动化测试进行自动化测试的假设。单元测试。为此,您需要额外的测试代码,这些代码不应包含在交付给客户的最终产品中。
因此,src/main/java
中的所有内容都默认打包到您为客户提供的产品中,而您放入src/test/java
的所有内容都不会。
由于各种原因,这是一个优势:
答案 1 :(得分:2)
让测试代码和生产代码(src/main/java
)分开的原因是,通过仅包含生产代码来构建应用程序更容易。
答案 2 :(得分:2)
根据Maven配置,test类将在src/test
目录中找到,源代码将在src/main
目录中找到。因此src/main/java
是源代码的根目录。 src/test/java/
是test
代码的根目录。
Ex:酒店套餐,预订舱位
Source Class file : src/main/java/Hotel/Reservation.java
Test Class file : src/test/java/Hotel/ReservationTest.java
答案 3 :(得分:1)
src/main/java
放置用于实际制作的代码。
src/test/java
放置测试用例代码,例如junit test。执行maven包装时会执行这些代码。这些代码不会被打包到你的war或jar文件中。这意味着这些代码不适用于实际生产。
Plus:单元测试代码不需要在生产中打包。您不需要也不应该将它们放在src/main/java
文件夹中。
答案 4 :(得分:0)
为了使类型更容易查找和使用,避免命名冲突和控制访问,程序员将相关类型的组捆绑到包中。here