我有一个包含junit测试的
Java项目,需要通过Jenkins在不同的测试环境(Dev,Staging等)上运行.
如何将项目的构建设置为不同的环境以及如何将URL,用户名和密码传递给maven?
我可以使用maven 3配置文件从属性文件中读取环境URL,用户名和密码吗?
- <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>
- 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:
测试运行器类中实现的更改:
- 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中,指定一个引用属性文件的配置文件,其属性位于:
- <profiles>
- <profile>
- <id>staging</id>
- <properties>
- <app.config>/your/path/to/app.staging.properties</app.config>
- </properties>
- </profile>
- </profile>
然后你可以将它传递给你的Surefire配置:
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <appConfig>${app.config}</appConfig>
- </systemPropertyVariables>
- </configuration>
- </plugin>
- </plugins>
- final String appConfigPath = System.getProperty("appConfig");
- // Load properties etc...
实际上,您实际上可以更进一步…完全转储Maven配置文件,并在Jenkins构建配置中指定-DappConfig = / your / path / to / app.staging.properties.