DOBON.NET DOBON.NETプログラミング掲示板過去ログ

NUnitのテストについて

環境/言語:[C#]
分類:[.NET]

はじめまして。
私はC#で開発を行っています。
今回はNUnitを使って開発を行う事になったのですが、
分からない事がたくさんありますが、
いろいろと質問するのは悪いので、一番気になっている事を書かしてもらいます。
NUnitを動かすという事に関しては大丈夫なのですが、
いろいろなホームページを見ても、テストするメソッドは短く、必ず戻り値があるというのが前提みたいで、例えば、戻り値がvoidだった場合のメソッドのテストはどうすればいいのでしょうか?
例えば、下記のような場合です。
TestClass s = new TestClass();
Assertion.AssertEquals(2, ?);//戻り値がvoidなので?の箇所に書けない。

TestClassのメソッドを実行したら、データベースを更新するだけのメソッドしか持っていなくて、戻り値がvoidだとすると、
そのデータが本当に更新されたのか?というテストが出来ない状態です。
テストの為にわざわざSelect文のSQLを発行するテストコードが必要なのでしょうか?
その場合は、テストコードのテストとか必要になってくるのでしょうか?
テストコードが書けない状態というのは存在するのでしょうか?
このような感じで今は迷いに迷っています。
テストコードをどのように書けばいいのか?分からない状態です。
voidの場合のテスト方法を知っている方がいましたらアドバイスください。
その他、NUnitを使って綺麗にテストコードを書くアドバイスやホームページなどもありましたら教えてください。
よろしくお願いします。
そもそもリアクションがないことが問題なのでは?
外見上のテストをするのに、外見を検査できないのではそもそも意味が無いとおもいます
お返事ありがとうございます。
データベースを更新するメソッドというのは、比較的よくある事だと思っているのですが、データベースが正確に更新されている?されていない?というのはテストは不可能なのでしょうか?
例えば下記のようなメソッドをテストしたい場合です。
テーブルのデータが削除されているのか?という事を調べたい場合です。

public void delete()
{
string sql = "delete from T_Test";
//その他の処理が続く・・・(sqlの実行など)
}


あと、リアクションというのはどういう意味なのでしょうか?
初歩的な質問ばかりですみませんがよろしくお願いします。
こんにちは。

DBでの確認ですが、DB自体を確認するしかないと思います。
DataSetとかでDB取得メソッドを用意しそれを確認するとか

[Test]
public void データベースレコード削除() {
  Delete();  // 削除。
  DataSet ds = GetDbData( "SELECT COUNT(*) FROM xx WHERE xx" ); // 取得してみる。
  Assert.AreEqual( ds.Table[0].Rows.Count, 0 );  // 結果が0なら削除された。
}

こんな感じになるんではないでしょうか??
ニュアンスで書いてますけど。汲み取っていただければ幸いです。

結局、無い袖は振れない訳で
GUIのテストだってそのボタンが押されたかのような振る舞いをするメソッドとか
キーが押されたかのような振る舞いをするメソッドとか
そういった類のものを用意するとか必要なんではないかと思いますが
如何でしょうか。
お返事が遅れてすみません。
アドバイスありがとうございました。
その後、いろいろと調べたのですが、メソッド単位、オブジェクト単位というような感じで、きっちり処理が分かれていないとテストコードはなかなか書くのが難しいのかな?と思いました。
kyohさんのアドバイス通り、今はテストコードにロジックを追加しています。
ありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板