LoginSignup
1
2

More than 5 years have passed since last update.

環境変数を書き換えるホワイトボックステストなんてもうやめて

Last updated at Posted at 2017-06-13

テストコードでこんなコメントを見かけた

これだと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);
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2