仕事
今日からよそのチームのお手伝いしてます。
DJUnitでテストケースを作成するのは良いのですがテスト対象のクラスがメソッド49個。
うちPublicになっているのが1個だけでそのメソッドのなかから残りのメソッドを呼ぶという形になっているため、テストはpublicメソッドただ1つを実行してやるんだそうです。
おかしくね?
これってカバレッジ回収が目的のテストなんだからメソッド1個ずつの観点でやるもんだろうに。
おかげさまでソース読んで担当になったメソッドに行き着くようにVirtualMockを設定するハメに。
しかもPCL(ProglamCheckList)上パラメータのnullチェックと化しなきゃいけないはずなのに、引数に取るのはpublicメソッドの引数。
しかもpublicメソッドの第一行はこのパラメータのキャストしてしながらメソッド実行です。
nullわたんねーよwwwwwwwwww
言葉で買い手もわかりづらいだろうから簡単に書くとこんな感じ。
public class TestClass extends DJUnitTestCase {
protected void setUp() throws Exception {
初期化
}
public testXXX() {
データの設定
try {
xxx(パラメータ);//←このなかでいろんな分岐を経て48個を呼んでる
} catch (NullPointerException ex) {
ログ出力
fail();
} catch (Exception ex) {
ログ出力
fail();
}
}
xxx()のなかではごちゃごちゃいろんなメソッド呼んでるので試験したいメソッドに行き着くように自分でデータを設定しないといけない。
もちろん今回テストするクラス以外にも大量に呼ばれるわけで。
いままで長いことプログラム書いてきたけどこんなテストは初めてだ。
pblicで公開しているメソッドで正しく結果が返ってくるかは単体テストおわってから実データ使ってやるもんだと思ってたんだけどなぁ。
総合試験では逆にデータのチェックだけしかしないんですと。
なおさら単体試験でチェックしとくべきだろうにね。
意見してみたけど却下されました。