ダミーのためのTDDの方法
8341 ワード
テスト駆動開発とは? 👀
テストに名前を付けるには? 🧠
-テストのために事前に定義された条件 (所与)
-テストされるアクション (いつ)
-我々が待つ結果 (それから)
TDD ルール ⚖️
ボブおじさんによると、TDD には 3 つのルールがあります
次のことは許可されていません.
告白🤭
電卓のコード例 🧮
要件を見てみましょう
👉 まずは空文字列ケースを扱うコードを書いてみましょう
@Test
public void givenEmptyString_Return0(){
CalculatorService calculatorService = new CalculatorService();
int result = calculatorService.getSum("");
assertEquals(0, result);
}
このコードを記述すると、
CalculatorService
とその getSum
メソッドが存在しないため、コンパイル エラーが発生します.そのため、サービスとそのメソッドを作成し、空の文字列に対して 0 を返す単純なロジックを記述します.
public class CalculatorService {
public int getSum(String s) {
if (s.isEmpty())
return 0;
else
return 1;
}
}
メソッドから値を返す必要があるため、else ステートメントの 1 は、コンパイラ エラーを回避するために使用される任意の値であることに注意してください.
👉 では、数字1個の文字列を扱うテストを書いてみましょう
@Test
public void givenAStringWith1Number_ReturnIt_WhenCalculateSum(){
CalculatorService calculatorService = new CalculatorService();
int result = calculatorService.getSum("5");
assertEquals(5, result);
}
このテストを最初に実行すると、戻り値が 1 になるため失敗します.
public int getSum(String s) {
if (s.isEmpty())
return 0;
else if (s.length() == 1)
return Integer.parseInt(s);
else
return 1;
}
👉 次に、2 つの数字で文字列を処理するテストを書きましょう
@Test
public void givenAStringWith2Numbers_WhenCalculateSum_ThenReturnSum(){
CalculatorService calculatorService = new CalculatorService();
int result = calculatorService.getSum("69");
assertEquals(15, result);
}
1 は 15 に等しくないため、このテストは失敗します.
機能させましょう
public int getSum(String s) {
if (s.isEmpty())
return 0;
else if (s.length() == 1)
return Integer.parseInt(s);
else
return getSumForMultipleNumbers(s);
}
private int getSumForMultipleNumbers(String s) {
return Arrays.
stream(s.split("")).
mapToInt(Integer::parseInt).
sum();
}
お祝い🥳
TDD を適用して、非常に単純な電卓をプログラムしました。
さらに読む 👨🏫
✅
✅
GitHub のコード👩💻
Reference
この問題について(ダミーのためのTDDの方法), 我々は、より多くの情報をここで見つけました https://dev.to/jarjanazy/how-to-tdd-for-dummies-419kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol