Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

初めてのテストコード

$
0
0

研修ということでRubyでの課題を進めていました。
基本的にはpythonでなら知ってる関数と同じことができるメソッドを探して進めていたんですが...

  • test/unitを使ってテストコードを書く

じゃんけんの勝ち負けを判定するクラス、メソッドを書いて、それをテストするコードを書く課題。
テストコードはpythonでも書いたことがなく、クラスも自分で書くのは数回しかやってないから何から始めりゃいいのか。
とりあえずググって見様見真似で書いてみた。

janken_class.rb
classJankendefhantei(p_hand,c_hand)ifp_hand==c_handreturn"あいこ"elsif(p_hand=="グー"&&c_hand=="チョキ")\||(p_hand=="チョキ"&&c_hand=="パー")\||(p_hand=="パー"&&c_hand=="グー")return"勝ち"elsereturn"負け"endendend

このクラスを使って標準入力からg,c,p(グー、チョキ、パー)を入力してコンピュータ側でのランダムな手との対戦結果を表示するコード。

janken.rb
require'./janken_class'player=gets.chompcpu=Random.rand(0...3)gcp={"g"=>"グー","c"=>"チョキ","p"=>"パー"}hands=gcp.valuesp_hand=gcp[player]c_hand=hands[cpu]janken=Janken.newresult=janken.hantei(p_hand,c_hand)puts"あなたは#{p_hand}、私は#{c_hand}#{result}です。"

そして問題のテストコード。

janken_test.rb
require'test/unit'require'./janken_class'classTC_janken<Test::Unit::TestCasedefsetup@obj=Janken.newenddeftest_draw_gcheck=@obj.hantei("グー","グー")assert_equal("あいこ",check)enddeftest_draw_ccheck=@obj.hantei("チョキ","チョキ")assert_equal("あいこ",check)enddeftest_draw_pcheck=@obj.hantei("パー","パー")assert_equal("あいこ",check)enddeftest_win_gcheck=@obj.hantei("グー","チョキ")assert_equal("勝ち",check)enddeftest_win_ccheck=@obj.hantei("チョキ","パー")assert_equal("勝ち",check)enddeftest_win_pcheck=@obj.hantei("パー","グー")assert_equal("勝ち",check)enddeftest_lose_gcheck=@obj.hantei("グー","パー")assert_equal("負け",check)enddeftest_lose_ccheck=@obj.hantei("チョキ","グー")assert_equal("負け",check)enddeftest_lose_pcheck=@obj.hantei("パー","チョキ")assert_equal("負け",check)endend

1つずつメソッドを作らなくても1つのメソッド内で複数の場合をテストした方がよいとのご指摘により修正。

janken_test_modify.rb
require'test/unit'require'./janken_class'classTC_janken<Test::Unit::TestCasedefsetup@obj=Janken.newenddeftest_jankencheck=@obj.hantei("グー","グー")assert_equal("あいこ",check)check=@obj.hantei("チョキ","チョキ")assert_equal("あいこ",check)check=@obj.hantei("パー","パー")assert_equal("あいこ",check)check=@obj.hantei("グー","パー")assert_equal("負け",check)check=@obj.hantei("パー","チョキ")assert_equal("負け",check)check=@obj.hantei("チョキ","グー")assert_equal("負け",check)check=@obj.hantei("グー","チョキ")assert_equal("勝ち",check)check=@obj.hantei("チョキ","パー")assert_equal("勝ち",check)check=@obj.hantei("パー","グー")assert_equal("勝ち",check)endend

test\unitについてはもっと公式リファレンス読み込んで理解しておきたい。

  • Vimがやっぱり使いづらい

色々とコード書いてて、やっぱり使いづらい。特に普通のIDEみたいに手軽にコピペができないのがしんどい。クリップボードが使えない設定になってたからvim_gnomeインストールして設定もいじってみたけどうまくいかない。WSLだからかな...

  • Ubuntu上からWindowsのファイルを操作

これには色々な方法があるみたいだけど、僕はUbuntuのホームディレクトリにwindowsのフォルダのシンボリックリンクを作ることにしました。

ln -s /mnt/c/Users/name ~/name

これ使えばもしかしたらwindows側のIDEからスクリプト書いてUbuntuで実行できるかも?


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>