0

プロジェクトのすべてのモデル クラスをテストする必要があります。これがクラスの1つです

public class TMyData{
    private mVar1;
    private mVar2;
    ...

    private TMyData(){
    }

    public static TMyData fromString(String str){
        ...
    }


    public String toString(){
        ...
    }


}

簡単に言えば、テストは次のようになります。

1) ランダムな TMyData を作成する

2) 文字列への呼び出し

3) 文字列から呼び出す

4)それらが同じであることを確認してください

問題は、ランダムな TMyData を作成することです。テスト クラスは別のクラス (TMyDataTest) であるため、次のことはできません。

TMyData p = new TMyData();  //I can't, because its private
p.mVar1 = ...; // I can't because is also private

テストのためだけに、すべての変数/メソッドの可視性を変更したくありません...また、ユーザーがプライベート変数にアクセスできるようにしたくありません(ゲッターもセッターもありません)

すべてのプロジェクトには独自のモデルがあるため、多くの人が同様の問題を抱えていたに違いありません。それをテストする適切な方法はどれですか?

4

1 に答える 1

0

私は反射でそれを行うことによってのみ解決策を見ることができます。

Field f = tmydata.getClass().getDeclaredField("mVar1"); //NoSuchFieldException
f.setAccessible(true);
f.set(tmydata,dataToSet);
于 2013-04-08T22:41:58.197 に答える