-荒業
public File getBaseDir(Class testClass) { String resourceName = testClass.getName().replace('.', '/') + ".class"; ClassLoader loader = testClass.getClassLoader(); URL url = loader.getResource(resourceName); File file = new File(url.toString()); return file.getParentFile(); }
ファイルシステムに関連するものをテストする際に、java.io.Fileが取れなくてこまってました。WEBコンテキスト、WEB-INFフォルダなどからファイルを読み出す機能、ファイルを探す機能は、たとえばプロパティファイルに絶対パスを各環境毎に記述するようなことを考えます。しかし、上記方法でTestCaseの配置してあるパッケージのファイルシステムをとることができます。ファイル配置に前提条件がありますが、全部相対に構築できるので、テストを書く際などでは有効かとおもいます(もちろん、MayaやKvasirといったフレームワーク・エンジンの本体ではこういう方法はNGです)。
何が荒技って、「+ ".class"」。こういうのはなかなか思いつかないです>Skirnirさん。ありがとうございます。