0

C#.NETでコンソールアプリを作るためのConsoleLib.NET

Monoでコンソールアプリケーションを作るときにargsの扱いが手間だったので作った。今のところ機能はそれだけ。dllとして書き出しているのでVB.NETやC++.NETでも使える。

shokai / ConsoleLib.NET / overview — bitbucket.org
右上からzipでダウンロードできる。mercurialを使っている人は

hg clone http://bitbucket.org/shokai/consolelibnet/ ./consolelibnet



使用例(ConsoleLibSample.exeのコード)
argsをハイフンなし、ハイフンつきなどを分けてくれる。


動かしてみる。ためしに引数を渡すと

./ConsoleLibSample.exe post -m “hello world” -o out.txt -l -s

こういう風に分割してくれる。

First: post
Switches: l s
Params:
m=hello world
output=out.txt
ARGS: post,-m,hello world,-o,out.txt,-l,-s,


使用例のコードを見ればわかるが、ParamsParserに渡せば分解してくれる。

Read more

0

VS2008で単体テスト

VisualStudio2008 professionalからIDE標準で単体テスト機能(ブラックボックステスト)が付いているので使ってみた。
俺は今まで単体テストはRSpecぐらいしかやったことがなかったし、何かライブラリを作った時はそれを使うGUI付きサンプルアプリケーションを作ることでしか動作確認してこなかったけど、これは次回からどんどん使っていく事にした。

この種のテストをブラックボックステストと呼ぶらしい。テスト対象のクラスの関数1つずつをブラックボックスと見るテストで、入出力の値に注目する。ある値を関数に入れてみて、予想した値が返ってくるかチェックすることで、関数が仕様を満たしているかチェックする。

今回はBenchmarkCounter.NETの中の処理時間を計るためのOrg.Shokai.Util.Benchmark.Counterクラスのテストを作った。Startメソッドで計測開始し、Stopメソッドで停止、その間の処理時間をミリ秒で保存できる。Start/Stopを複数回行った場合、その間の平均処理時間も求める事が出来る。

テストでは、出力値が正しい値になっているかどうかチェックする。このBenchmarkCounterのテストでは

  • 処理時間を取得するメソッドの場合
    → 時間の値が0以上でなければエラー
  • 計測回数を取得するメソッドの場合
    → 何回か計測してみて、計測回数が合わなければエラー
  • 計測中かどうか?フラグの場合
    → Startメソッドにfalseだったらエラー
    → Stopメソッド後にtrueだったらエラー
という感じ。

Read more