我有一个包含junit测试的
Java项目,需要通过Jenkins在不同的测试环境(Dev,Staging等)上运行.
如何将项目的构建设置为不同的环境以及如何将URL,用户名和密码传递给maven?@H_301_3@
我可以使用maven 3配置文件从属性文件中读取环境URL,用户名和密码吗?@H_301_3@
编辑:我已将配置文件添加到Project POM:@H_301_3@
<profiles> <profile> <id>Integration</id> </profile> <profile> <id>Staging</id> </profile> <profile> <id>PP1</id> </profile> <profile> <id>PP2</id> </profile> <profile> <id>PP3</id> </profile> </profiles>
如何将URL,用户名和密码传递给这些配置文件?@H_301_3@
目前,测试是从属性文件中获取测试环境详细信息:@H_301_3@
public class BoGeneralTest extends TestCase { protected WebDriver driver; protected BoHomePage boHomePage; protected static Properties systemProps; String url = systemProps.getProperty("Url"); String username = systemProps.getProperty("Username"); String password = systemProps.getProperty("Password"); int defaultWaitTime = Integer.parseInt(systemProps.getProperty("waitTimeForElements")); static { systemProps = new Properties(); try { systemProps.load(new FileReader(new File("src/test/resources/environment.properties"))); } catch (Exception e) { e.printStackTrace(); } }
编辑2:@H_301_3@
测试运行器类中实现的更改:@H_301_3@
public class BoGeneralTest extends TestCase { protected WebDriver driver; protected BoHomePage boHomePage; protected static Properties systemProps; String url = systemProps.getProperty("Url"); String username = systemProps.getProperty("Username"); String password = systemProps.getProperty("Password"); int defaultWaitTime = Integer.parseInt(systemProps.getProperty("waitTimeForElements")); String regUsername = RandomStringUtils.randomAlphabetic(5); final static String appConfigPath = System.getProperty("appConfig"); static { systemProps = new Properties(); try { systemProps.load(new FileReader(new File(appConfigPath))); } catch (Exception e) { e.printStackTrace(); } }
解决方法
我不会在POM中包含任何属性,但会在每个环境中使用外部属性文件,至少在属性更改时您不需要触摸POM.
在您的POM中,指定一个引用属性文件的配置文件,其属性位于:@H_301_3@
<profiles> <profile> <id>staging</id> <properties> <app.config>/your/path/to/app.staging.properties</app.config> </properties> </profile> </profile>
然后你可以将它传递给你的Surefire配置:@H_301_3@
<plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemPropertyVariables> <appConfig>${app.config}</appConfig> </systemPropertyVariables> </configuration> </plugin> </plugins>
从您的测试中,您可以加载属性文件的内容,例如:@H_301_3@
final String appConfigPath = System.getProperty("appConfig"); // Load properties etc...
实际上,您实际上可以更进一步…完全转储Maven配置文件,并在Jenkins构建配置中指定-DappConfig = / your / path / to / app.staging.properties.@H_301_3@