2016-03-29 12 views
2

私はユニットテストを実行するためにPowerMockRunnerを使用しています。私は資産フォルダからいくつかの缶詰のネットワーク応答jsonファイルをロードしたい。PowerMockRunnerで実行されるアンドロイドユニットテストからjsonファイルをロードするにはどうすればよいですか?

このメソッドを使用してファイルを取得しようとしています。

private static File getFileFromPath(Object obj, String fileName) { 
     ClassLoader classLoader = obj.getClass().getClassLoader(); 
     URL resource = classLoader.getResource(fileName); 
     return new File(resource.getPath()); 
    } 

私はこのようなメソッドを、上の注釈を持つクラスから呼び出します。

@RunWith(PowerMockRunner.class) 
@PrepareForTest(Network.class) 

File file = getFileFromPath(this, "mock_response.json"); 

ただし、この式を評価すると、

このテストを実行している間、私は現在このディレクトリにいます。

/Users/tylerpfaff/Library/Android/sdk/platforms/android-23/data/res/ 

プラットフォームのリソースディレクトリに表示されているように、プロジェクトのリソースディレクトリから自分のリソースを正常に読み込むことはできません。私のプロジェクトのリソースディレクトリにアクセスするには何が必要ですか?

答えて

1

あなたは2つのオプションがあります。

  • はPowerMockによって無視されたクラスからクラスローダを取得ClassLoader.getSystemClassLoader()
  • を介してシステムクラスローダーを取得しよう。デフォルト:

"org.hamcrest "、 "javaの"、 "javax.accessibilityの"、 "日"、 "org.junit "、「ORG .testng。 " "のJUnit。"、 "org.pitest。"、 "org.powermock.modules.junit4.common.internal。"、 " org.powermock.modules.junit3.internal.PowerMockJUnit3RunnerDelegate "、 " org.powermock.core * "、" org.jacoco.agent.rt。* "

または@PowerMockIgnoreを使用することができます。

関連する問題