3

メソッドの冪等性をテストする必要があります。

次のメソッドを持つクラス Person があるとします。

    public String doSomething(String a){ 
//do some stuff
personDao.delete(a)
}

削除の前に何か問題が発生した場合、次にメソッド doSomething を呼び出したときに、最初に正しく実行されるべきだったときに望んでいたのと同じ結果が作成されることをテストする必要があります。これは、たとえば、そのメソッドを呼び出すスクリプトを実行したが、スクリプトを停止するなどして失敗した場合に発生する可能性があります。次回スクリプトを実行すると、失敗することなく同じ結果が得られるはずです。

単体テストでこれを行うことはできますか?

前もって感謝します

4

2 に答える 2

3

テストでは、メソッドを 2 回実行する必要があります。結果/結果はどちらの場合も同じである必要があります。それは本当にそれと同じくらい簡単です。

擬似コード:

setupException();
doSomething(a);
assertOutcome();
doSomething(a);
assertOutcome();
于 2014-10-10T11:44:26.883 に答える
1

したがって、答えの最初の部分は、DAO にモックを使用することです。2 つのテストを作成します。1 つはメソッドが 2 回呼び出され、DAO が例外をスローしないテストです。DAO が最初の呼び出しで例外をスローするもう 1 つの場所。

これら 2 つのケースで予想される動作は、DAO によって異なります。deleteすでに削除されている値を DAO で呼び出しても問題ありませんか? もしそうなら、素晴らしい。2 回の呼び出しが予想されます。そうでない場合は、状態をチェックするロジックが必要です。

于 2014-10-10T12:32:44.710 に答える