2013-04-04 3 views
7

デバッグ中にファイルにオブジェクトをコピーして、後でテストに使用できる方法はありますか?私はEclipseのJavaを使用しています。 具体的には、junitsを作成するためのリクエストオブジェクトをコピーするのをやめました。オブジェクトをeclipseデバッガからコピー

+0

ご覧ください:http://stackoverflow.com/questions/15407944/copying-the-objects-while-debugging –

+0

オブジェクトを文字列としてeclipseでコピーすることができます。これらはtoString()メソッドの出力です。 – BlackJoker

+0

@ Shreyos Adikari私はリクエストオブジェクトに対してこの質問のアプローチを使用することはできません。 – RegisteredUser

答えて

6

オブジェクトのクラス(またはそのスーパークラス)がjava.io.Serilizableインターフェイスを実装している場合、このオブジェクトを簡単にシリアル化してファイルに格納できます。あなたがオブジェクトを持っているとしましょう:

MyClass myObj = new MyClass(); 

だけ開いて '表示' Eclipseのビュー([ウィンドウ] - > [ビューを表示 - >その他... - >デバッグ/表示)とタイプ:

java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(new java.io.FileOutputStream("/path/to/your/file")); 
oos.writeObject(myObj); 
oos.close(); 

このコードを選択してCtrl + iを押すと、Eclipseがコードを実行するので、myObjはファイル(この場合は "/ path/to/your/file")に保存されます。このパッケージは現在実行中のクラスにインポートされない可能性があるため、表示ビューでjava.ioパッケージのクラスの正規名を使用してください。

後で、(テストクラスでは、例えば)このオブジェクトを復元することができます。もちろん

import java.io.*; 

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("/path/to/your/file")); 
MyClass myObj = (MyClass) ois.readObject(); 
ois.close(); 

、あなたはresorce漏れを避けるために、通常のtry/catch /最後にものでこれをラップする必要があります。

MyClassがjava.io.Serializableインターフェイスを実装していない場合、残念ながら、これは機能しません。

+2

ええ、myclassはシリアライズ可能ではありません – RegisteredUser

関連する問題