13

一般的な質問は、ユニットテストのためのAAAの代替パターンはありますか?もしそうなら、いくつかの例を見て、それらの長所と短所について聞くことは非常に興味深いでしょう。

そして、AAAテストの最も簡単な例として(c#では、簡単にするためにvarを使用):

// Arranging
var annualSalary = 120000M;
var period = 3; // for a quarter profit
var calc = new SalaryCalculator();

// Acting
var result = calc.CalculateProfit(annualSalary, period); 

// Assertion
Assert.IsEqual(40000, result);
4

5 に答える 5

11

AAAの代わりというよりは、バリエーションとしてのものが好きです。私はそれをArrange-Assert(not)-Act-Assertと考えていますが、他の人はそれをGuard Assertionと呼んでいます。アイデアは、アクトの望ましい結果がアクトの前にまだ存在していないことを保証するアサーションを持つことです。ここでそれについての良い議論があります。

于 2012-12-21T15:13:40.060 に答える
9

ビヘイビア駆動型開発には、Given - When - Thenという別の表記法があります。c# の例はSpecFlowであり、Jasminの JavaScript の例です。どちらのリソースにも、この表記法を使用した例がたくさんあります。GWTアプローチは、通常、動作駆動型開発およびアスペクト指向プログラミングで使用されます。

于 2012-12-21T13:24:45.397 に答える
4

初期のモッキング フレームワークの一部 (少なくとも .Net の世界) では、記録/再生パターンを使用する必要がありました。私がフォースと言ったのは、それがとても自然で読みやすいとは思えず、当時は他に選択肢がなかったからです。

これにより、AAA フォームを促進する分離フレームワークの新しい競争が生まれました。AAA フォームは、最も意図を明らかにするアプローチであることがわかりました。詳細については、こちらをご覧ください。

于 2012-12-27T14:03:11.780 に答える
1

パラメータ化されたテストを使用している場合、多くの場合、「配置」または「与えられた」部分をパラメータに移動できます。それでも原則は変わらない

于 2012-12-21T17:17:17.580 に答える