TDD
shunit2にはテストを円滑にすすめるための内部定数がいくつか用意されています。 実際のところ SHUNIT_TRUE Standard shell true value (the integer value 0). SHUNIT_FALSE Standard shell false value (the integer value 1). SHUNIT_ERROR The integer v…
Table Driven Testをつかうと、似たデータのテストをブン回すときに便利です。 実際のところ ヒアドキュメントで while read desc arg want; do got=$(fn ${arg}) rtrn=$? assertTrue "${desc}: fn() unexpected error; return ${rtrn}" ${rtrn} assertEqual…
shellでTDDするshunit2のお話。 今回はTDDフレームワークで欠かせないものの一つ、テストの前と後の値設定です。 実際のところ oneTimeSetUp/setUp 存在する場合テスト前に呼び出され、そのテストで使用する一時環境変数を設定します。 前者は呼び出されたら…
実際のところ assertEquals [message] expected actual expectedとactualを比較し、同じなら正を返す。 要は普段使いのコマンド。別表現として"assertSame [message] expected actual"という記法もあり。 個人的には、どちらかに限定して置いた方があとあと…
前回に続いてshunit2のお話。 今回はいよいよRed/Greenテストの開始です。 実際のところ つかってみる ではまず失敗するファイルをつくりましょう #! /bin/sh myFunc() { echo 0 } testEquality() { value=`myFunc` assertEquals 1 "$value" } # Load shUnit…
シェルコマンド は思いついた事をすぐ実装できる手軽さ、移植性が高いなどのメリットがある反面、 多人数開発という観点ではあまり嬉しくない状況がありました。そんなお困りごとはTDDで解決! 一時ほど聞かなくなりましたが、それでもテストの重要性は今尚…
実際のところ まずは公式チュートリアル通りの以下のスクリプトをやってみましょう。 (コメントは日本語してみました) #include <stdlib.h> void f(void) { int* x = malloc(10 * sizeof(int)); x[10] = 0; // 問題その1: ヒープ領域ぶっちぎってる } // 問題その2: </stdlib.h>…
Magnum CIはBitbucketの非公開リポジトリでも無料でビルドできてしまう凄いCIツールです。 (記事執筆現在)サインアップすると、次のような画面がでます。 リポジトリを設定 butbucketの設定 hook ssh githubなら、毎度お馴染みのアレで 新規の鍵を追加して M…
step内で別のstepを呼び出す事が可能です。前回の記事も、 step 'トップを表示' do Capybara.app_host = "http://localhost:3000" end step 'ユーザの情報を入力' do visit '/users/sign_in' fill_in 'user_login', with: name fill_in 'user_password', wit…
組込み機器といえば、センサーですね。 温度センサーで水温測ったり、加速度で転倒検知したり。 ところが、こういうモノは値ブレブレで一意に定まりません。 ここで活躍するのがWITHIN構文です。 TEST_ASSERT_INT_WITHIN(delta, expected, actual); これは、…
TEST_ASSERT_EQUALはINT型の計算結果を返します。 公式ドキュメントによればTEST_ASSERT_EQUAL_INTと同じ意味合いらしいです。 ……というわけで #define END_FLAG 0b11111111 int8_t result = END_FLAG; というコードに対して TEST_ASSERT_EQUAL(END_FLAG, re…
今回はCeedlingのコマンドに関してです。 とりあえずは、全部テストの rake test:allとビルド内容をクリアする rake cleanさえ使えれば大丈夫です。 それに加えて以下のコマンドを使えると更に捗ります。 verbosity rake verbosity[0] test:allといった感じ…
以前の記事で紹介したTDDフレームワークUnityですが、 それの強化発展版としてCeedlingというものがあります。 Sinatraにとってのpadrinoみたいなものですね。 前提 Ruby / Rack が動作する環境 gcc系のC/C++コンパイラ 手順 $ gem install ceedlingで導入完…
奥さん、僕ぁC言語でもTDDしたいんですよ! ……というわけで、Rubyで実現する素敵なC言語TDD環境、Unityです。 3Dゲームを作るアレではなく、TDD用テストフレームワークです。 UnityはRubyistにはお馴染みのRackを使っています。 Ruby&Rack環境が方は先に導入…