0

私はまだ特定のことをユニットテストすることに同意しています。比較的単純なクラスのJUnitテストについて質問があります。

public class Kite {
    private List<String> strings = new ArrayList<String>();

    public void addString(String string) { //... }
    public void removeString(String string) { //... }
    public List<String> getStrings() { //... }
    public int getNumStrings() { //... }
}

この場合、4つの方法すべてをテストしたいと思います。しかし、私が書いたテストはすべて非常に似ています。それら(削除を除く)はすべて、Kiteに文字列を追加し、Kiteオブジェクト内の文字列の数をチェックするという基本構造に従います。

これらの「CRUD」タイプのメソッドをテストするためのより良い方法はありますか?

それらをテストする必要がありますか?

4

2 に答える 2

3

テストでは、より具体的にすることをお勧めします。addString()の場合、次のことをテストします。

  1. 追加した文字列がコレクションに存在します。

  2. 副作用として、他の文字列はコレクションに追加されませんでした。

  3. addString()にnullを渡すと、IllegalArgumentException(または動作がどうあるべきか)がスローされます

  4. 同じ文字列を2回渡すと、動作は希望どおりになります(IllegalArgumentExceptionの場合もあれば、no-opの場合もあります)

アイデアが浮かびますか?通常の動作(「ハッピーパス」と呼ばれることもあります)だけでなく、エッジケースのテストを追加する必要があります。可能な入力、可能な出力、および実行可能なコードパスの観点からテストについて考えてください。

于 2013-01-21T17:35:55.923 に答える
1

トランザクションをモデル化する1つのテストを作成することを考えます。

  1. 前提条件を確認してください。
  2. 追加操作を実行します。
  3. 事後状態を確認してください。
  4. 削除を使用した追加操作のロールバック。
  5. カイトが元の状態にあることを確認してください。

これらのメソッドはすべて、その方法でテストされます。

于 2013-01-21T17:34:49.683 に答える