1

マップに何かを追加して表示するクラスを作成する方法。

通常、すべてのコードを単体テストでカバーする必要があり、データを表示するメソッドをテストするのは問題であることを考えると、最適なインターフェイスについて疑問に思っていました。

これが私の最初の考えでした:

class MyFirstProgram {
    private Map<String, String> map = new HashMap<String,String>();
    public int insertData(...) {...}
    public void displayData(...) {...}
}

...しかし、検索について何もテストすることはできず、この表示方法があります...だから私はこれを考えました:

class MyFirstProgram {
    private Map<String, String> map = new HashMap<String,String>();
    public int insertData(...) {...}
    private Map<String, String> retrieveData(...) {...}
    public int displayData(...) {...call ; return status}
}

これで、リフレクションを使用してプライベート メソッドをテストできますが、この表示メソッドはまだあります...

デザインについて何か考えはありますか?

4

2 に答える 2

0

Map変数のゲッターとセッターを作成してみてください。

class MyFirstProgram {
    private Map<String, String> map = new HashMap<String,String>();
    public setMap(Map data) {...}
    public Map getMap(...) {...}
}

次に、マップ値を印刷する場所でgetMapメソッドを使用します。セッターとゲッターを使用したくない場合は、マップを入力として受け取り、それを印刷する任意のメソッドを使用できます。

public void PrintMap(Map data){print(data)}
于 2012-12-06T18:09:06.853 に答える
0

実用的な方法は、Map へのアクセスを許可することです (コメント付きのデフォルト/パッケージ アクセス メソッドを介して// for unit testsアクセスします。実際には、メソッドforUnitTestGetMap()に名前を付けて明確にし、標準の getXXX 命名規則との混同を避けることをお勧めします。通常は、Map を呼び出しtoString()て、本来あるべき YMMV と比較するだけで問題ありません。HashMap の標準メソッド (put() など) を呼び出すだけの場合は、テストできることも、テストする必要がinsertData()あることもあまりありません。コードは Java ライブラリ コードです。

または、displayData()メソッドで、データの代替表現を作成しますか? XML、JSON、または JPanel などでしょうか。その場合は、それを見て、データの内容が正しいことを確認してください。明らかにXMLはJPanelよりもはるかに簡単ですが、JPanelに3つの子があり、最初の子が「OK」という名前のボタンであることを確認するなどのことを行うことができます...

于 2012-12-06T19:21:31.640 に答える