人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

データベースを利用したシステムのユニットテストについての質問です。
環境はPHP + MySQL + SimpleTestですが、汎用的な回答であれば特に言語にこだわる必要はありません。

【データベース】
日時カラム(datetime型)を持つテーブルがあります。

【テストしたいメソッド】
”メソッドの実行時”に、上記のカラムに”現在日時に一定の秒数を足した日時”を入れてその他のカラムとともに更新します。
(足される秒数はレコードごとに異なり、これは他のメソッドからメンバ変数にセットしています。)
更新に成功すればtrue、失敗すればfalseを返します。

現在は、メソッドの呼び出し後=レコード更新後にそのレコードを取得し、あらかじめ用意した期待する結果と比較してテストしています。
ただ、上記の日時カラムについては、カラムに入る値がメソッドを呼び出すまで特定できないため、比較によるテストができません。
このようなメソッドをテストする場合、どうするのがよいでしょうか?みなさん、どうしてますか?

目視で確認?
日付カラムは無視する?
メソッドをオーバーライド?
そもそも、戻り値のテストだけすればよい?

よろしくお願いします。

●質問者: zaxaxaz
●カテゴリ:ウェブ制作
✍キーワード:MySQL PHP simpletest オーバー カラム
○ 状態 :終了
└ 回答数 : 2/3件

▽最新の回答へ

1 ● koriki-kozou
●35ポイント

>他のメソッドからメンバ変数にセット

ユニットテストだからユニットそのものには手を加えるわけにいかないし、「他のメソッド」をオーバーライド(実際にはテスト用に別途用意)だね

「他のメソッド」は上限値か下限値のいずれかをセットするようにして常に一定の値を返すようにしておいてもいいと思うし、自動的定期的に変わるようにしてみてもいいけど、そこまでするかどうかはケースバイケースだよね

◎質問者からの返答

回答ありがとうございます。

「他のメソッド」でセットする値を固定しておけば、テストが簡単になりそうですね。

結合テストの場合は自動テストが難しそうですが、

この場合も「テストしたいメソッド」「他のメソッド」を別に用意して、「固定の日時+固定の秒数」で更新するようにするとかでよさそうですね。


2 ● hanako393
●35ポイント

>そもそも、戻り値のテストだけすればよい?

これです。

DB格納に関しては、別のテストを実施されてるか、実施してたらOKです。

>上記の日時カラムについては、カラムに入る値がメソッドを呼び出すまで特定できないため、比較によるテストができません。

このテスト方法でテストする項目ではそもそもありません。

◎質問者からの返答

たしかに、一度にまとめてテストしすぎかもですね。

テストの仕方を見直してみようと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ