19日目の記事ですSwiftでなにか作ろうと思ったのですが、時間が足りず...そこで、自分がTestをほとんどやったことなかったので、Test系の記事にしました。開発手順は3ステップです。」は、テストを書きますが、実行するとテストが通らない実装を書きます。」は、実装を行なっていきます。実行するとテストを通ります。」は、「Green」の実装を綺麗にしていきます。※今回、どの手順かわかりやすくするためにそれっぽい色の絵文字つけていきますTDD_実装編TDDの開発手順に沿って開発していこうと思います。今回は、簡単なtodo管理アプリを作成しようと思います。プロジェクト名はTestable-swiftとしておきます。Xcodeでテストをする場合、XCTestを使用します。〜todoを管理するクラスの作成todoの文字列を格納するArrayを変数として持つだけのクラスを作成します。Array<String>()}todoの追加listへtodoを追加するメソッドを作っていきます。Red追加するメソッドだけでは、テストができないので、取得するメソッドも使用しましょう。テストを先に書きます。追加するメソッドをappend()、最初の値を取得するメソッドをgetTop()とします。}}setUp()でTodoListのインスタンスを作って、appendを呼んで、getTopでappendと同じ値が取得出来ているのを確認します。TodoListのインスタンスは他のテストでも使うので、変数にしておきます。ここまで書くと、エラーが出ます。TodoListにappend()とgetTop()がないというエラーが出ているので、TodoListに実装していきます。}}append()は、メソッドがあればエラーは無くなるので、空実装。getTop()は返り値が必要なので、空文字列を返しておきます。Uでテストを実行できます。}}Testを実行して見ましょうテスト成功ですRefactor先ほど実装した、append()とgetTop()をリファクタリングしていきましょう。append()で追加した値を、getTop()で返すようにしましょう。}}Testを実行して見ましょうテスト成功しましたね!これで、リファクタリングした後のコードも期待した動きをすることが保証されました。このような手順をメソッドを実装するたびに行なっていくのが、TDDと呼ばれる開発手法です。TDDでよく使われる手法を紹介していきますTDD_手法フェイク単純にテストが成功するように値を入れることを、フェイクと呼びます。先ほど「Green」で行なった、テストが成功するようにtodo_1という値を入れておくのもフェイクです。"todo_1"}例として、listにtodoがあるかどうかを調べるメソッドを追加していきます。テストを失敗させるためにfalseを返しましょう。true}Testを実行して見ましょう成功!!Refactorここでは省略しますトライアンギュレーション(Triangulation)複数のテストケースを用意し、そのテストケース全てを成功するコードを書くことで、一般解を出す方法です。例として、listにあるtodoの個数を取得するメソッドを追加していきます。todoList.size())}todoを1つ追加して、個数を取得して、1つかどうかのテストです。1}Testを実行して見ましょう成功!!ここでトライアンギュレーションを使います。todoList.size())}todoの追加をもう一度行い、個数が2つになるテストを追加しました。list.count}一般解として、listの個数を返すようにしました。Testを実行して見ましょう成功しましたね!!Refactorここでは省略しますテストが1つだと、フェイクで済んでしまいますが、テストが複数個できた場合には対応できません。}}このようなコードができました!今回は、車窓からのTDDという記事を元にTDDを行なっていきました感想・まとめTDDになかなか手を出せずにいたのですが今回やってみました。upLoginユーザーは見つかりませんでした。