Jenkinsを介してさまざまなテスト環境(開発、ステージングなど)で実行する必要があるJUnitテストを含むJavaプロジェクトがあります。
現在、さまざまな環境でプロジェクトをビルドし、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が発生するためです。
どんな提案でも大歓迎です。