我有一个场景。我们正在为我们的应用程序开发Selenium Page Factory自动化框架。要求是框架项目应该与测试项目(子项目)独立(或父项)。
一旦定义了框架,它就可以被任意数量的子项目重用。
即,父应该包含与BasePage,BaseTest,DriverManager,DriverFactory以及chromedriver,IEdriver等资源相关的类
子项目应包含从框架扩展BasePage的特定于应用程序的页面,以及从框架扩展BaseTest的测试用例。
子项目应该是app1,app2
之类的任何数字请使用示例pom.xml文件建议最佳maven项目架构。
父
XXXXX.mp3
子
|_src/main/java
|_BasePage
|_BaseTest
|_ReadConfigOfChild
|_DriverFactory
|_src/main/resources
|_chromedriver.exe
|_IEDriverServer.exe
|_log4j2.xml
我们应该能够在新的孩子添加时简单地扩展父级,而无需编辑父pom
|_src/main/java
|_Page1 extends BasePage
|_Page2 extends BasePage
|_src/main/resources
|_config.properties (URL, username, password)
|_src/test/java
|_Tese1 extends BaseTest
|_Test2 extends BaseTest
|_pom.xml
|_TestNgSuite.xml
答案 0 :(得分:3)
听起来像你所说的 parent 应该被称为 core ,它不应该是父,而应该是其他项目的依赖。
的说明强>在Maven中,简单地说,您的父项不是包含基类的项目,而只是一个没有源的项目,设置所有(子)项目使用的公共插件,依赖项和其他配置(在您的聚合构建中) )。
修改强>MyProj/pom.xml // Aggregation/Reactor - has no parent, no sources, and (usually) no resources, but lists all modules (including parent) as modules
MyProj/modules/parent/pom.xml // has no parent (or for example sonatype, if you deploy with them), no sources, but eventually some resources, no modules
MyProj/modules/parent/src/main/resources/config/checkstyle.xml
MyProj/modules/core/pom.xml // has *parent* as parent, no modules
MyProj/modules/core/src/main/java/com/myDomain/myPkg/core/BasePage.java
MyProj/modules/core/src/main/resources/log4j2.xml
MyProj/modules/ui/pom.xml // has *parent* as parent and *core* as a dependency, no modules
MyProj/modules/core/src/main/java/com/myDomain/myPkg/ui/MyUiPage.java (extends BasePage)
MyProj/modules/service/pom.xml // has *parent* as parent and *core* as a dependency, no modules
MyProj/modules/core/src/main/java/com/myDomain/myPkg/service/MyServicePage.java (extends BasePage)