0

プロパティ ファイルなどの名前を変更し、単体テストを容易にするために、リファクタリングしたい静的クラスがあります。

現在私はこれを持っています:

public enum MySettings {

   INSTANCE;

   //priv vars
   private string applicationUrl;

   private MySettings() {

     MappingJsonFactory jf = new MappingJsonFactory();

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream mySettingsInputStream = classLoader.getResourceAsStream("a.properties");

    Properties mySettingsProperties = new Properties().load(mySettingsInputStream);

    // code below to load json and set priv vars etc.




   }

   public String getApplicationUrl() {
       return applicationUrl;
   }
}

単体テストでプロパティ ファイルの名前を別の名前に設定するにはどうすればよいですか?

4

2 に答える 2

3

「コントロールの逆転」。ここでこれを行う最も簡単な方法は、コンストラクターの引数として受け取ることです。ハイエンドには、Spring などの IOC フレームワークがあります。

-を扱っているため、さらに悪いケースではenum、インターフェイスを除外してから実装列挙型を提供する必要がある場合があります。またはより良い:

public enum Settings {
    PRODUCTION("prod.xml"), UNIT_TESTING("dev.xml");
    //...
于 2013-03-10T16:24:40.500 に答える
0

列挙型クラスのすべてのものを(パッケージ保護または保護を介して)実際のインスタンス化可能なクラスにいじり、列挙型(ゲッター)を介してそのインスタンスにアクセスできるようにすることができます。このように、チャームのようにすべてを単体テストし、シングルトンとして使用することもできます:)。これにより、2番目の列挙型定数は必要ありません(コメントで指摘されているように)。

パッケージ保護の代わりに保護を使用している場合は、実際のクラスから継承するダミークラスを作成し、次のようにテストでインスタンス化することで、単体テストを行うことができます。

private static class Dummy extends NewClass {

    public Dummy() {
        super();
    }

}
于 2013-03-10T16:40:17.723 に答える