ラベル テスト の投稿を表示しています。 すべての投稿を表示
ラベル テスト の投稿を表示しています。 すべての投稿を表示

2009年9月25日金曜日

NUnit で TestSuite の作成と実行

VS2008で、プロジェクト(DLL)毎に記述したテストクラスを
一度にまとめて実行したい!と思ったのが発端。

NUnitのドキュメントを見る限り、どうやらSuite属性を使えば出来る模様。
http://www.nunit.org/index.php?p=suite&r=2.5.2

で作成してみたサンプル
SmapleTest.DLL
------
namespace SmapleTest
{
[TestFixture]
public class SampleTest
{
[Test]
public void TestCase1
{
Assert.Fail("失敗するテストケース");
}
}
}
------

TestSuite.DLL
------
namespace TestSuite
{
public class AllTest
{
[Suite]
public static IEnumerable Suite
{
get
{
ArrayList suite = new ArrayList();
suite.Add(new SampleTest());
return suite;
}
}
}
}
------

これをNUnit.exeに読み込ませてみる。
これで完成!



と思いきや。


NUnitに表示されたのは一行のみ
『C:\TestSuiteSample\TestSuiteSample\bin\Release\TestSuite.DLL』
DLLの絶対パスやん。

おもむろにRUNボタンを押してみるが、動作しません。


再度NUnitのドキュメントを読み直しました今度はちゃんと。

NUnitの起動時に/fixtureのコマンドラインオプションをつけてねと書いてありました。

コマンドプロンプトで以下を実行(全て一行で書いてます。)
-----
C:\Program Files\NUnit 2.5.1\bin\net-2.0\nunit.exe /fixture:TestSuite.AllTest C:\TestSuiteSample\TestSuiteSample\bin\Release\TestSuite.DLL
-----

fixtureオプションでSuite属性のプロパティを持っているクラスの絶対パス(名前空間を含めたフルパス)を指定します。

これで立ち上がったNUnitにちゃんとSampleTestのテストケースが表示され、
実行することが出来ました!


英語を読むのに苦労しましたが、何とかテストスイートの作成に成功!
これで少しテストコードの作成が面白くなってきました♪

.

2009年9月21日月曜日

単体テストについて

最近はテストコードを書く人になっていたので、
書いていて思った事をつらつらと。

・まず目的を設定する。
 何のためにテストコードを書いているのか?
 テストコードを書いて何を検査したいのか?

・テストケースの追加が容易になるようにテストコードを書く
 追加コストが高いと必要なテストケースを後で追加しなくなるため。
 入力と結果の2つを引数にもつ関数を実装していれば問題無いと思う。

・テストコードを書いたらカバレッジも一緒に計測すること
 これが無いとテスト出来ているのかが分からない。
 目で結果が見れるものであれば達成感も味わえる。

・テスト対象のコードとテストコードは同時にビルドすること
 同時にビルドしていないとテストコードのメンテナンスをしなくなり、
 折角書いたテストコードを腐らせていく原因になります。
 
・テストコードを実行させるのは容易か?
 実行コストが高いとテストを実行させない。
 テスト自動化(回帰テスト)の意味が無い。

.

2007年11月8日木曜日

ファイルの読み込み例外処理

テストでファイルやフォルダのアクセス権なくしたり。
読み込むファイル削除したり。
ファイル消して同じ名前のフォルダ作ったり。
単なるファイルの読み込みだけでもテスト項目って豊富なんやなーと。

そのたびに例外が発生してたので処理書いて残しときます。
--------------------
using System;
using System.IO;

if (File.Exists(path) == false) {
// 読み取れるファイルで無い
}
try {
// ファイル読み込み
using (FileStream fs = new FileStream(path, FileMode.Open)) {
}
} catch (UnauthorizedAccessException) {
// アクセス権
} catch (IOException) {
// I/O エラー
}

--------------------

.

2007年7月2日月曜日

テストの異常系について

ちょうど自分が異常系の定義について考えていた時に
「悪態のプログラマ」にこんな投稿がありました
異常系とは何であるか考えよう

自分の中での異常系の定義とは
・警告のダイアログを表示する
・エラーメッセージを表示する
のことやと決め付けてた。

自己定義が原因でプロジェクト内で意見が食い違っていたことが多々あり、
これじゃまずい!と感じて、異常系の定義をプロジェクト内で話あって認識を合わせた
このことによってテストの異常系を記述する際に悩まなくなったし、
テストシナリオにも統一性がとれて読みやすくなった。

そんな後で「悪態のプログラマ」でのこの記事を見つけて
異常系の解釈の違いがあるのは仕方ないことなんやとホッとしました。
それに、テストを想定して異常系の処理をあらかじめ決めておくことは
すごい重要なんですね。
ここは今まであやふやにしてきたところもあったので
これを気にしっかり決めていくようにしよう!

.

2007年1月11日木曜日

デバッグとテスト

デバッグとは、
プログラムが動くか?を確認すること

テストとは、
プログラムが動かない?を確認すること

ラベル