raviyoshi

オープンソースのソースコードを読んだメモとか。

2008年8月23日土曜日

いきなり挫折

NUnitを構成するプロジェクトの関係を調べたところnunit.core.dllプロジェクトへの依存が多いことが分かりました(以前の記事参照)。そこで、このプロジェクトのコードを見てみることにしました。

いきなりコードを見ても理解できないだろうと考えて、テストケースから当たってみます。しかし、適当にクラスを選んで読んでみても、テストケースの状況が理解できません。テストケースが理解できないので、当然ながらテスト対象のコードを読んでも何をしているのかちんぷんかんぷん。

そもそも、コアから読み始めたのが問題だったのかもしれません。次はGUIのプログラム実行開始ポイントから読んでみることにします。

ラベル:

2008年8月16日土曜日

NetBeansでRuby

NetBeans6.1でRubyを使うときの注意点。


  • 実行時に日本語を出力すると文字化けする

    対応策→http://d.hatena.ne.jp/shishimaruby/20080630/1214828028

  • Subversionでコミットするときにコメントを日本語で入力すると文字化けする

    Windowsの場合の対応策。

    C:\Documents and Settings\ユーザ名\Application Data\Subversionにあるconfigを開き、
    # log-encoding = latin1
    log-encoding=UTF-8
    に修正してNetBeans起動。



Javaを使うときはEclipseばかり使ってますが、NetBeansもいい感じです。日本語のサポートが不安ですが。

ラベル:

2008年8月9日土曜日

プログラミングRuby 第2版 言語編

少しだけ夏休みができたので、プログラミングRuby 第2版 言語編を図書館で借りてきました。まだRubyのインストールしかできていないけれど、先が楽しみ。

ラベル:

2008年8月7日木曜日

ストリームのテスト

NUnitでは、ストリームのテストをするとき、ストリームの内容の一致判定を行います。

例えば、テスト対象のクラスがa.txtを開いているFileStreamをメンバとして持っているとします。このとき、a.txtを開く別のFileStreamインスタンスとAssert.areEquals()で比較させてみると、ちゃんとパスします。また、別のファイルでも内容が同じならばパスします。

JUnitではオブジェクトIDによる判定を行うので、同じように書くと失敗します。

ちなみに、Listは持っている要素が同じかどうかで確認します。これはJUnitと同じです。

ラベル: ,

2008年8月2日土曜日

テストケースの位置

普段Javaで開発するとき、以下のような感じでテストクラスとテスト対象のクラスを分けています。

---src
| |-package1
| |-ClassA.java
| |-ClassB.java
|-test
|-package1
|-ClassATest.java
|-ClassBTest.java


つまり、srcディレクトリ下にテスト対象のクラスを置き、testディレクトリ下にテストクラスを置きます。こうすることで、同じパッケージ下にテストクラスが存在し、かつテストクラスをテスト対象のクラスと分離できます。

NUnitによるユニットテストを行う場合は、上記のような分離ではなく、プロジェクト単位での分離が一般的なようです。(NUnit自体もそのようになっています)

C#では最終的な出力ファイルがexeやDLLなど単一のファイルにまとめられます。そのため、同一プロジェクトにテストクラスを混ぜてしまうと、テストクラスも出力ファイルに含まれてしまうからでしょうか。

ラベル: ,

2008年8月1日金曜日

時刻の扱い方

C#で時刻を扱うには、System.DateTimeクラスを使います。

このクラスにはTicksメンバが定義されていて、MSDNによると「このインスタンスの日付と時刻を表すタイマ刻み数を取得します。」とのこと。タイマ刻み数って何だ?と思い調べてみると、100ナノ秒単位のタイムスタンプのようです。

ラベル: