2017-01-06 11 views
1

アプリケーションにJunitsは記述されていません。しかし、他のモジュールでは、Jmockitを使ってJunitsを書き始めました。したがって、コアJavaまたはJmockitソリューションはいずれも高く評価されます。Junit:インスタンスなしでプライベートメソッドを呼び出す

私はシングルトンであるアプリケーション初期化クラスを持っています。データベース[データロード]、プロパティファイルなどを呼び出してアプリケーションを初期化します。オブジェクトの作成は複雑です。

クラス[メソッド名addMoreInitilization]を初期化する新しいメソッドを記述しています。

私は上記のシナリオでJunitを書きたいと思っています。複雑なオブジェクト作成ロジックを呼び出さずにaddMoreInitilizationメソッドのためにJunitを書く方法はありますか?それらはすべて依存性があり、それらを嘲笑して実行可能ではなく、メソッドを静的にしたくないからです。

Class ApplicationStartUp { 

    private ApplicationStartUp applicationStartUp; 
    // assume single ton implemented 

    private ApplicationStartUp() { 
     // complex object creation 
     addMoreInitilization(); 
    } 

    public static getInstance() { 
    } 

    // new method 
    private addMoreInitilization() { 
     // my logic needs to be tested using junit 
    } 

} 

答えて

0

以下ApplicationStartUpクラスの疑似Javaコードあなたのテストで "ApplicationStartUp" を拡張することができます。次に、不要なメソッドをオーバーライドします。このようにして、サブクラスのObjectを作成し、スーパークラスのメソッドaddMoreInitializationを呼び出すことができます。

+0

プライベートメソッドを上書きすることはできません。それはあまり意味がありません。 – GhostCat

+0

あなたは正しいです。それを見ていない。 – SebastianK

+0

私が試した最初のことは、ApplicationStartUpクラスを拡張することでしたが、スーパークラスのprivateメソッドを呼び出すことはできません。また、他のものを使って試してみました。リフレクションはオブジェクトを初期化する必要がありますが、それは複雑なので努力する価値はありません。 b。 JMockitのDeencapsulationクラスですが、リフレクションとしての問題があります。 – Mahesh

関連する問題