このオブジェクトグラフを再作成するステートメントのセットにラージオブジェクトグラフ(実行時またはデバッグ中)の内容を保存したいという状況がよくあります。これはユニットテストケースのテストデータとして使用できます。オブジェクトグラフのリーフは、標準タイプ(String
、BigDecimal
、Date
、等)であり、分岐がBean規則(ゲッター、セッター、空のコンストラクタ)に従う、生成することが可能でなければならないことに注意テストデータを生成するためにコード生成を使用する
この種類のファイル(例えばTestData.java):
public static Car createCar() {
Wheel wheel1 = new Wheel();
wheel1.setTypePressure(2.1f);
Wheel wheel2 = new Wheel();
wheel2.setTypePressure(2.3f);
Wheel wheel3 = new Wheel();
wheel3.setTypePressure(2.0f);
Wheel wheel4 = new Wheel();
wheel4.setTypePressure(2.8f);
List<Wheel> wheels = new ArrayList<>(Arrays.asList(wheel1, wheel2, wheel3, wheel4));
Brake brake = new Brake();
brake.setBrakeType(BrakeType.PLAIN);
Car car = new Car();
car.setBrake(brake);
car.setWheels(wheels);
car.setColor("blue");
return car;
}
は、何らかの形で直接デバッグセッションにこれをプラグインすることは本当に素晴らしいことだが、いくつかのドロップインの文は、「Javaのオブジェクトグラフの作成コードを結果として書き込みコンテンツ付き "出力System.out
も機能します。
これはどうすれば最も効率的な方法で実現できますか?
私は同意します。私はまた、仕事でGSONの簡単な例を削除することを提案します。 1ライナーでできることは信じられないほどで、OPが簡単だというだけではないでしょう。 – tucuxi
すぐに使用できるソリューションがない場合は、JSONを試してみます。私の唯一の懸案事項は、(Junit)テストコードから分離したJSONファイルに保存されたデータはリファクタリングを受けないということです。 Ergo:モデルが変更された場合(属性名、エンティティ名)、リファクタが自動的にJavaソリューションに取り組みます。認める:構造が変わったら、とにかく問題があるだろう。 – sjaak
@tucuxi。私はちょうど私の小さな例を試しました。それは本当に素晴らしいです。 – sjaak