BaseTest到底该放main还是test?

框架设计时应该思考的几个问题:选型如何?工具类以及测试基类BaseTest的存放位置?UI和API框架是否沿用同一思路?

以下为思考整理:

项目是但项目还是多项目?

从0到1的搭建,只考虑单项目的情况,记得:不要过度设计。何为过度?骨架未成,先考虑多并发,考虑多项目,效率大幅下降,如果后期真的有多项目沿用,安排重构。未雨绸缪是好事,但是用力过猛容易翻车;

 

UI框架和API框架是否是相同骨架?

我踩过坑,在于我之前一直是做接口的框架,然后自己搭app框架的时候发现,依赖会冲突。

例如 BaseTest 测试基类的位置:API 框架中可能放在 main 层,UI 框架中可能放在 test 层。首先要看项目的定位:这套东西是否可复用?或者是否需要被复用?

TestNG 的 scope 也要单独考虑。假设是单项目、单 App,TestNG 的 scope 通常设为 test。因为对框架而言,test 层放的是测试执行代码,main 层放的是框架资产。

 

Maven 为什么区分 main 和 test?

我的理解可能比较抽象:test层的代码是用来验证main层的;并且main不能依赖test的代码,但反之就成立;

 

BaseTest 放在 main 还是 test?

那么两个框架的测试基类其实还是有差别的,首先依赖,api是restassured,它并不依赖testng的注解;所以放main没问题;

但是你ui的测试基类不同,你放java main中,main层编译就找不到@beforclass这类了;

package org.testng.annotations does not exist

确实,你改scope没问题,但是真如你所想以后其他项目复用这个框架,全都会带上testng。那么又当如何?所以测试基类对于ui自动化,放test/java,让它和testng待在一起,可能是干净的做法和选择

 

总结

所以,没有绝对的是非对错,关键看你把项目定位成什么。框架是要作为可复用工具包对外提供,那么 main 层的依赖和边界就要更谨慎;如果只是单项目内的 UI 测试框架,把 BaseTest 放在 test 层、和 TestNG 同 scope,往往更自然。 当然有些中小型企业可能没那么多条条框框,可能没人在意,也不会问自己为什么,报错了就直接改依赖的scope就结束了。是否你有多思考一步了?

 

posted @ 2026-09-19 16:22  安格笔记  阅读(0)  评论(0)    收藏  举报