����ϡ����Ρ�Ʊ�������ɡפ������
��ï���񤤤Ƥ�Ʊ�������ɡפ�����ʤ��ȤʤΤ� - �Ҥ��䤹�� blog�Ǥ⡢��ï���񤤤Ƥ�Ʊ�������ɡפˤ���äƤΤϡ����⤽��̵�����Ȼפ������͡�������äơ��虜�虜�ɥ�����Ȥ򤿤�����񤫤��Ƥ⡢�᤿�᤿�ʥ����ɤ�񤯤�ĤϤ��ơ�����ƥ��Ȥ���Ȥ��ˡ������dz���夬���Ρ��������٤ε��ϰʾ�Υץ��������Ȥʤ顢�ɤ��Ǥ⤽��ʴ�������ʤ����Ȼפ��ޤ���
Ʊ���ֽ����פ򤷤ʤ���Фʤ�ʤ��Τ�?
��̤���Ʊ���פʤ餤���Τ�?
�⤷��Ԥ��Ȥ����顢�¤�
���פʤΤϡ���ï�Ǥ���ƥʥ󥹤Ǥ��륳���ɡפˤ��뤳�ȡ����Τ���ˡ������ǥ��󥰵���ϡ�������ȷ��Ƥߤ�ʤǼ�롢����ʾ�ϡ���������������ɬ�פϤʤ���
����ɬ�פ���ޤ��󡣤ʤ��ʤ顢�ǰ������ɤϽ�ľ���Ф�����Ǥ����顣
���������֤��Υ����ɤ����򤹤٤����פ��狼�äƤ��ʤ��ȡ����Ȥ������������äƤ�̵�Ϥʾ�礬�ۤȤ�ɡ�����ʥ������Ǥ��餽���ǡ��ޤ��Ƥ䥹�ѥ��åƥ������ɤȤ�ʤ�С�
���ΰ�̣�ǡ��¤ϥ����ǥ��󥰵����ꡢ���ƥʥ֥�ʥ����ɤ������Ω�ĤΤ����ƥ��ȡ��פϥƥ��Ȥ�ѥ����Ƥ��ޤ��Фɤ������ɤ��Ƥ⹽��ʤ����Ȥ����Τ�TDD = Test Driven Development =�ƥ��ȶ�ư��ȯ�ιͤ����Υ١����ȤʤäƤ��ޤ���
�ΤǤ�����TDD��Perl������Ƥ��ޤ�����ڤ��Ƥޤ��󡣤��줬�ʤ����Ȥ����С��ƥ��Ȥ����ޤ�ˤ�����--���Ȼפ��Ƥ��뤫��Ǥ�������򸫤�С����ݤ��Ȼפ���Τ��������Ȼפ��ޤ���
��TDDer�������֥��׻Ϥ�ޤ��� - t-wada������Test::Unit - Ruby��ե���󥹥ޥ˥奢��public void testDefaultStackSizeShouldBeZero throws Exception { assertEquals("����ľ��Υ����å��Υ�������0�Ǥ��뤳��", 0, stack.size()); }
require 'test/unit' require 'foo' class TC_Foo < Test::Unit::TestCase def setup @obj = Foo.new end # def teardown # end def test_foo assert_equal("foo", @obj.foo) end def test_bar assert_equal("bar", @obj.bar) end end
���������ƥ��Ȱ�ĤΤ���ˡ��ؿ������Υ᥽�åɺ����Τäƾ�ʤ˸���줿�顢����äƤ�������Υ��åѡ����ʤ�����Ĥ������ʤ�ޤ��衣��ϼºݤˤ��������ٶ��ޤǤϤʤ��Τǡ�assert_unko()
���������mail������Ĥ������٤ˤȤ�Ȥ��Ȥ�פ��ޤ�����
����ʤ��ʤ��ˤ�����ʤΤ���Test Anything Protocol��ά����TAP�Ǥ���ά�ΤΤ��Ȥ��ڤ䤫�Ǥ�������Perl�ǻȤ��Ƥ��ޤ����������ޤ�˥���ץ�ʤΤǸ�����䤤�ޤ��󡣤ʤˤ����ƥ��ȥץ������ϡ�ɸ����Ϥˤ�������˽��Ϥ�������Ǥ����ΤǤ����顣
Test Anything Protocol - Wikipedia, the free encyclopedia1..N ok 1 Description # Directive # Diagnostic .... ok 47 Description ok 48 Description more tests....
�ºݤ�ruby��FizzBuzz��ƥ��Ȥ��Ƥߤޤ��礦��
% ruby fizzbuzz.t 1..17 ok # 1 ok # 2 ok # 3 ok # 4 ok # 5 ok # 6 ok # 7 ok # 8 ok # 9 ok # 10 ok # 11 ok # 12 ok # 13 ok # 14 ok # 15 # got: # expected: FizzBuzz not ok # 16 # got: # expected: 16
����Ǥ������Ϥ狼��ޤ�����
% ruby fizzbuzz.t | grep ^not not ok # 0 not ok # 16
�������ȯ���Ǥ���Ȥ������⤰���Ǥ�����perl�����󥹥ȡ��뤵��Ƥ���С�����˥ƥ��Ȥ�¹Ԥ��Ƥ����ץ�����ࡢprove
��ϳ��ʤ��Ĥ��Ƥ��ޤ������졢Perl�ʳ��Υץ������Ǥ⡢TAP�˽�򤷤Ƥ���Хƥ��Ȥ��Ƥ����ΤǤ��衣
% prove fizzbuzz.t fizzbuzz....FAILED tests 16-17 Failed 2/17 tests, 88.24% okay Failed Test Stat Wstat Total Fail List of Failed ------------------------------------------------------------------------------- fizzbuzz.t 17 2 16-17 Failed 1/1 test scripts. 2/17 subtests failed. Files=1, Tests=17, 0 wallclock secs ( 0.00 cusr + 0.01 csys = 0.01 CPU) Failed 1/1 test programs. 2/17 subtests failed.
�Ǥϡ��ºݤΥƥ��ȥץ������fizzbuzz.t
�ȡ��ƥ��ȥץ��������ư���뤿��Υץ������tap.rb
�򸫤Ƥߤޤ��礦��
fizzbuzz.t
#!/usr/local/bin/ruby require 'tap.rb' require 'fizzbuzz.rb' test 17 is fizzbuzz(1), 1, 1 is fizzbuzz(2), 2, 2 is fizzbuzz(3), 'Fizz', 3 is fizzbuzz(4), 4, 4 is fizzbuzz(5), 'Buzz', 5 is fizzbuzz(6), 'Fizz', 6 is fizzbuzz(7), 7, 7 is fizzbuzz(8), 8, 8 is fizzbuzz(9), 'Fizz', 9 is fizzbuzz(10), 'Buzz', 10 is fizzbuzz(11), 11, 11 is fizzbuzz(12), 'Fizz', 12 is fizzbuzz(13), 13, 13 is fizzbuzz(14), 14, 14 is fizzbuzz(15), 'FizzBuzz', 15 is fizzbuzz(0), 'FizzBuzz', 0 is fizzbuzz(16), 16, 16tap.rb
def test(ntests=0) puts "1..#{ntests}" if ntests > 0 end def is(got, expected, message=nil) print 'not ' if expected != got print 'ok' print " # #{message}" if message print "\n"; if expected != got puts "# got: #{got}" puts "# expected: #{expected}" end end
tap.rb
���Τ�FizzBuzz�¤ߤ˴�ñ�����ˤ�α�դ���������
�ǡ�(�虜�Ȥ餷��)�ƥ��Ȥˤ�����FizzBuzz����������Ƥ���fizzbuzz.rb
�򸫤Ƥߤޤ��礦��
def fizzbuzz(n) return 1 if n == 1 return 2 if n == 2 return 'Fizz' if n == 3 return 4 if n == 4 return 'Buzz' if n == 5 return 'Fizz' if n == 6 return 7 if n == 7 return 8 if n == 8 return 'Fizz' if n == 9 return 'Buzz' if n == 10 return 11 if n == 11 return 'Fizz' if n == 12 return 13 if n == 13 return 14 if n == 14 return 'FizzBuzz' if n == 15 end
����ʤ��������񤤤��麣�٤������ˤ�����(ry
�Ȥ����ΤϤ����Ȥ��ơ������
def fizzbuzz(n) fz = if n % 3 == 0 then 'Fizz' else '' end fz += if n % 5 == 0 then 'Buzz' else '' end if fz == '' then n else fz end end
�ȤǤ⺹���ؤ��Ƹ��ޤ��礦�����٤Ϥɤ��Ǥ��礦��?
% prove fizzbuzz.t fizzbuzz....ok All tests successful. Files=1, Tests=17, 0 wallclock secs ( 0.00 cusr + 0.01 csys = 0.01 CPU)
����TAP��Wikipedia�������Ǥ⽼ʬ�ʤΤǤ�����"Perl Testing"�ˤϤ���˾ܤ����ܤäƤ��ޤ����ޤ����ܸ��ǤϤʤ����ޤ�Ƭ��"Perl"�ȤĤ��ƤϤ���ΤǤ��������Ƥ�ʿ�פǡ������ʤ⤳�μ���ܤȤ��Ƥ�3,000�ߤ��ڤäƤ���Τǡ�Perl�ץ�����ޡ��Ǥʤ��Ƥ�TDD�������Ȥ���ͤ��ܤ��̤��Ƥ����٤�����Ǥ���
assert�ˤ��󤶤ꤷ�Ƥ��뤢�ʤ���Test�Ϥ�ä�Simple�ˤʤꤦ�뤷�������٤��ʤΤǤ���
Dan the TAP Dancer
��ɴ�ͤ��������󤳤�ɤ�ɤ��������ƥ�ӥ���󤬥ȥ���˹Ԥ�
������餤�夬�äƤ����Ȥ�������̴�Τ褦�ʡ�
�ޤ����絬�ϳ�ȯ��и����Ƥʤ��֤��Υƥ��ȴѡפʤ��礷����ΤǤ�;)