父母和子女项目maven

时间:2015-07-24 07:04:48

标签: java maven selenium selenium-webdriver testng

我有一个场景。我们正在为我们的应用程序开发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

1 个答案:

答案 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)