テストコードでこんなコメントを見かけた
これだと1テストケースごとに環境変数を変更しないといけないので、
一度にテストケースを流せないですよね。
JUnitテストコード
/*
* 注)環境変数のHOSTNAMEを「host_test1」に設定の上実施すること!
*
*/
public void test001() {
// assertion
}
/*
* 注)環境変数のHOSTNAMEを「host_test2」に設定の上実施すること!
*
*/
public void test002() {
// assertion
}
スマートなやり方
PowerMockitoなら、以下のようにモック化できます。
PowerMockito.mockStatic(System.class);
PowerMockito.when(System.getenv("HOSTNAME").thenReturn("host_test1");
複数の環境変数をモック化したいのであれば、以下のように書くこともできます。
Map<String, String> envMap = new HashMap<>();
envMap.put("HOSTNAME", "host_test1");
envMap.put("USER", "ops_user");
PowerMockito.mockStatic(System.class);
PowerMockito.when(System.getenv().thenReturn(envMap);