我有一个包含 JUnit 测试的 Java 项目,需要通过 Jenkins 在不同的测试环境(Dev、Staging 等)上运行。
我目前必须在不同的环境中构建项目并将 url、用户名和密码传递给测试运行器的解决方案是在 POM 文件中为每个环境加载特定的属性文件。属性文件将通过 Maven 构建命令为每个环境设置:
mvn clean install -DappConfig=/src/test/resouces/integration.environment.properties
在 pom.xml 中:
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<appConfig>${app.config}</appConfig>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
在 JUnit 测试运行器类中:
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();
}
}
这种配置的问题是,现在各个测试不能通过 Eclipse 单独运行,因为它们期望appConfig
从 maven 接收,而我得到 NullPointerException。
任何建议都受到高度赞赏。