読者です 読者をやめる 読者になる 読者になる

TDDBC参加 メモ

TDDBCにスタッフとして参加したので、つれづれにメモ書き。 TDDBCで発表があったことの内容よりも、参加した中で考えたりしたことをちょっと書きだしておきたいと思います。Keep グリーンの安心さと同時に細かいテスト実行を伝えられたのは大きかった。 最後…

31日のイベントのお題をGroovy&Spockにする

なんとかGroovy&SpockでXP一日体験ワークショップで出されていたお題を終えること自体は終わったので、一応のおわた宣言ブログ書きます。元々のXP一日体験ワークショップのときのGithubがあるのですが、受入テストまで書き換えてしまっているので現在コード…

私が考えるTDD 〜TDDは天才にしかできないのか〜

TDD Advent Calendarに参加していないのに書くのも微妙なのですが、今回はTDDについてです。TDD Advent Calendarの記事はかなりハイスペックな内容になっています。今回の私の記事はそれらには到底及ばないと思いますが、私の考えるTDDを書いて行こうと思い…

Clojureでテストを書く (with TDD)

Clojureでテストを書く、というのはclojure.testというものを用いることで簡単に達成できます。今回はTDDを進めていく体で、テストの書き方を紹介していこうと思います。 お題は簡単に行うためにFizzBuzz*1です。FizzBuzzについてはWeb上に多く紹介があると…

テスト駆動開発の練習(18) -Groovy&SpockでFizzBuzz-

練習でGroovy&SpockでFizzBuzzを書いてみました。FizzBuzzSpec.groovy import spock.lang.*; class FizzBuzzSpec extends Specification { def fizzbuzz def setup(){ fizzbuzz = new FizzBuzz() } def '3の倍数を受け取るとFizzを返す'(){ expect: fizzbuzz…

サテライト #TDDBC 佐賀 に参加してきました

サテライト #TDDBC 佐賀に参加してきました。今回は、TDDBC in Tokyo 1.5のサテライトということで、Ust見た後、演習という形でした。ちなみに今回はほぼ触ったことのないGroovy&Spockという無茶をやってしまったので、あまりTDDのリズムの良さはなかった気…

TDDPC佐賀に参加しました Part2

TDDPC佐賀に参加しました。前回もTDDPC佐賀に参加して、参加人数も増えて少しずつではありますがid:cubeonさんの努力が実を結び始めているのかなと感じます。また、他の地域でも随分とTDDBCの開催が行われているみたいですね。私も近くならまた行きたいと思…

佐賀TDD勉強会に参加しました

佐賀TDD勉強会(TDDPC佐賀)に参加してきました。TDD Boot Camp 福岡で知り合ったid:cubeonさんの主催でした。最初に分かっていた参加者は全員TDDBCでの知り合いということでTDDBCのようなTDDをやりまくる、というよりは雑談をしつつゆるーい感じでTDDをやる感…

テスト駆動開発の練習(17) -C++&GoogleTestでポーカーの役判定(3)-

とりあえず、今回で役判定の記事は最後にします。今回は存在しないカードの数字やスートも数字も同じカードが2枚以上無いかと言った反則に当たるものがないかを判定しています。また、前回までのコードの問題点を直し、リファクタリングもしています。(結局…

テスト駆動開発の練習(16) -C++&GoogleTestでポーカーの役判定(2)-

前回、ポーカーの役を数値のみで判定していたので、少し進めてスートでも判定できるように構造体と列挙体を用いて改良することにしました。その過程で前回のテストに足りていなかった境界値が存在することに気がつきました。その辺りは後で書くとして、今回…

テスト駆動開発の練習(15) -C++&GoogleTestでポーカーの役判定-

久々にC++&GoogleTestをやりました。最近、写経や試しに使ってみるとかしかしてなかったのと、他の言語がある程度身についてしまっていて書き間違いがやり始めたときに多少目立ちましたが、後半で少し勘を取り戻せた感じです。今回はスートは考えずに数字の…

はじめてのRuby&RSpec

TDDBC福岡でRubyとRSpecを用いたTDDを見て、かなり興味が湧きまして、そして少し触ってみることにしました。元々、「次にWebアプリ系を触るときはRubyをやる!」という気持ちはあったので、これも何かの縁と思ってやりました。1日触ったくらいですが、RSpec…

F#でTDDBC福岡の課題をやってみた(1)

TDDBC終わって既に3日目なんですね、早いものです。TDDBCでは課題として、「ScreenName\tTweet」のような形になっているツイートのデータを受け取って、与えられた仕様に基づいて処理する、という感じでした。実際には10個の仕様があったのですが、今回はそ…

TDD Boot Camp 福岡に行ってきました!

TDDBC福岡、行ってまいりました。…すごいですね。思っていた以上に意識やレベルの違いを感じました。勉強のために行くつもりでしたが、一番変化したのは意識や気持ちという部分かもしれません。今回はOCamlで参戦しましたが、なにせ突貫工事で突っ込んだので…

Qtのテストのためのライブラリ 『QTestLib』 を使ってみた

久しぶりの更新です。 そうはいっても、友人知人のブログの更新頻度を見ているとそうでもない方なのかな?更新頻度って人によってまちまちでブログの更新頻度って人それぞれですよね。 それはさておき『QTestLib』について。しっかりしたことを書くというよ…

テスト駆動開発の練習(14) -OCaml&OUnitで円/ドル計算-

OCamlを最近始めましたが、まだTDDでOUnitを使ってプログラミング・・・とまではたどり着いていません。はっきり言ってしまうと、OUnitで使われている構文がよくわからない、おまじない的な要素が今のところとても多いです。ですが、使わないと始まらない、…

テスト駆動開発の練習(13) -C#&NUnitでクイックソート-

大分、間が空いてしまいました・・・今回はC#でクイックソートを実装します。 class QuickSort { private int[] sortedArray; public QuickSort(int[] array) { sortedArray = new int[array.Length]; for(int i = 0; i < array.Length; i++) sortedArray[i]…

テスト駆動開発の練習(12) -Java&JUnit4でマージ-

ぐぬぬ…マージの実装って難しい。番兵法でしようとしたら、配列の操作にてこずってしまったので安直な方法での実装で終了しました。(一応、番兵法でも作ったものの、配列のままではやりづらいのでVectorに入れ直して操作してました)ソースコードは以下の2つ…

テスト駆動開発の練習(11) -Python&noseで2分探索-

3日ほどネットのない実家に寄生・・・もとい帰省していたので、その間に少しばかりTDDの練習。今回はPython&noseで2分探索を作ってみました。2分探索はリストの探索アルゴリズムでは逐次探索の次に出てくるベーシックな探索ではないでしょうか。早速、ソース…

テスト駆動開発の練習(10) -Erlang&eunitで足し算関数-

朝早く起きたので、少しプログラミング。引数によって、数値同士を足し算するか、リスト同士を結合する関数を作ります。今回は"if"とリスト同士の結合に使われる"++"、また"?_assertException"を使ってみました。早速ソースコード。(ちなみに一ヶ所作りたい…

テスト駆動開発の練習(9) -Erlang&eunitでFizzBuzz-

唐突にErlangを触ることにしました。Erlangはエリクソンが開発した言語で、何といっても分散環境やフォールトトレラントのための言語ですから、わくわくしてしまいます。元々やりたいとは思っていたのですが、なぜか昨日の夜に「やろう!」と決意して本を注…

テスト駆動開発の練習(8) -Java&JUnit4でバブルソート&コムソート-

なんか難易度前回より下がった?アルゴリズムの王道、ソートからこれまたソートの王道の一つ、バブルソートを実装してみる。いわゆるところ、久々に手を動かしてソートのプログラム書いてみようって話。ちなみにそんなソートプログラムでも収穫はありました…

テスト駆動開発の練習(7) -C#&NUnitでインデクサを使ってみる-

今回はC#&NUnitでTDDをしつつ、インデクサを使ってコードを書いてみることにしました。インデクサとは、クラスに配列のように[]でアクセスすることができるようにするプロパティです。うーん、説明下手でスミマセン。インデクサの詳しい説明は他のサイトに…

テスト駆動開発の練習(6) -Python&py.testでフィボナッチ数列-

なんか最近こればかりしていますが、言語とTDDとアルゴリズムの勉強という一石三鳥を狙った勉強法なので結局毎日こればかりしている形になっています。今日はPython&py.testでフィボナッチ数列。なんでフィボナッチ数列かというと、Pyhtonでジェネレータを…

テスト駆動開発の練習(5) -C++&Boost::Testで組み合わせの数-

さて、今回は前回より(ただ単に実装するだけなら)簡単な組み合わせの数の計算をするプログラムをTDDで実装してみようと思います。ちなみに今回はC++&Boost::Testです。 「ただ単に」と意味深に言ったのは、関数による実装だけでなくテンプレートクラスの特…

テスト駆動開発の練習(4) -Python&py.testでFizzBuzz-

FizzBuzz最後の一つ、Python&py.testによる実装。 もはや実装コードとテストコードで言うことはない(はず)。 class FizzBuzz(object): def __init__(self, startNumber): self.__currentNumber = startNumber def says(self): if self.__currentNumber % 3 …

テスト駆動開発の練習(3) -C#&NUnitでFizzBuzz-

今回もFizzBuzzの実装。 ちなみにタイトル通りC#&NUnitを使ってます。 次はPython&py.testのFizzBuzzを実装したコードを載せるつもりですが、その次に別のテーマで書く場合は一テーマにつき一つの言語のコードのみ書いていくことにします。さすがに一テー…

テスト駆動開発の練習(2) -Java&JUnit4でFizzBuzz-

さすがに分けないとと苦しい感じだったので前回と同じ題目「FizzBuzz」の残りの内の一つJava&JUnit4で実装したコードを乗せておきます。TDDは初心者ですので「こうした方がいいよ」などというアドバイスがあればコメントに書いていただければ幸いです。(ど…

テスト駆動開発の練習(1) -C++&Boost::TestでFizzBuzz-

今回、TDDの練習を始めようということで、FizzBuzzを実装してみることにしました。FizzBuzzはよくあるゲームで何人か人が円になって順番に隣の人の言った数字に1を足した数字を言っていきます。ただし3の倍数のときは「Fizz」、5の倍数のときは「Buzz」、3と…

モックオブジェクトとスタブ

私はテスト駆動開発初心者なので、テスト駆動開発の用語として色々と知らない用語があります。例えば少し前までまったく知らなかった「モックオブジェクト」という概念。 モックオブジェクトというのはスタブの一種だと考えられますが、少々ちがう意味を持っ…

Boostライブラリによるテスト (3)

この前も早朝にこのネタをやっていた覚えがあるのは気のせい・・・?ともあれ、今回はテストスイートの作り方。まず単なるテストスィートから。「手動で一つのテストスィートを作成するためにはマクロBOOST_TEST_SUITを使用してください:BOOST_TEST_SUITE(t…

Boostライブラリによるテスト (2)

昨日はメモ書き程度だったので、追加でわかった事項を記述。まず、Boostのテスト用の比較マクロには三種類あり、LevelがWARN、CHECK、REQUIREとなっています。それぞれのレベルで、WARN:警告、CHECK:エラー、REQUIRE:致命的エラーのためのテストとなって…

Boostライブラリによるテスト (1)

まだ始めて間もないので適当なメモ書き程度に。 boost/test/included/unit_test.hppをインクルードすると、リンクも不要らしいのでありがたい。とりあえず実行用テストはBOOST_AUTO_TEST_CASE(a){ ... }の...部分に。でテスト名をaの部分に書く。 もちろんBO…

はじめてのJUnit

はじめてのおつかいならぬ、はじめてのJUnit。 なんだかんだプログラミングをやってきたくせに、単体テスト系はほぼノータッチできた私。 Javaそのものも大体知ってるくらいでそんなにまともな開発で使ったことがないという恐るべき「Microsoft信者か!」レ…

CppUnitのVisualStudioでの設定(実行編)

今回は実際に単体テストを行う場合の設定を書く。まず、テストを行いたいプログラムが存在するプロジェクトの上位のソリューションにテスト用の「Win32コンソールアプリケーション」プロジェクトを作る。テスト用プロジェクトは前回CppUnitTestMainに行った…

CppUnitのVisualStudioでの設定(準備編)

VisualStudio 2008にCppUnitの設定がちゃんとできたようなのでメモ。まずはCppUnitからcppunit-.tar.gzをダウンロード。 解凍した後に、VisualStudioを起動。VisualStudioでCppUnitのディレクトリの"\examples\cppunittest\CppUnitTestMain.dsw"を開き、プロ…