static final フィールドに依存するクラスを何らかの方法でテストすることは可能でしょうか? たとえば、次のクラスがあります。
public final class Foo
{
private static Foo instance;
public static final String BAR_FILE = "/usr/bin/bar.bar";
private Foo()
{
loadBar();
}
public static synchronized Foo getInstance()
{
if (instance == null)
{
instance = new Foo();
}
return instance;
}
private void loadBar()
{
final Properties prop = new Properties();
try
{
final FileInputStream fis = new FileInputStream(BAR_FILE);
prop.load(fis);
fis.close();
}
catch (final IOException ex)
{
System.out.println("Exception!");
}
}
}
ではgetInstance()
、BAR_FILE がハードコードされていて、UNIX スタイルのパスに等しい場合、Windows でメソッドをテストするにはどうすればよいでしょうか (テストするものが何もないことはわかっていますが、これは単なる例です)。私は反射を介してこのフィールドを変更しようとしましたが、うまくいきませんでした。さらに、この議論によれば、それは不可能です。どんな助けでも大歓迎です!