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ナノ秒単位のタイムスタンプのようです。

ラベル:

2008年7月29日火曜日

名前空間

名前空間は、Javaでいうパッケージみたいなものです。以下はNUnit.Coreという名前空間を宣言する例です。

namespace NUnit.Core
{
  ...
  public class TestCase
  {
    ...
}

Javaのパッケージとは違い、名前空間はディレクトリ名と一致させる必要はありません。また、ドメインを逆に並べる慣習もないようです。

1つのファイルに複数の名前空間を宣言することも可能です。しかし、複数の名前空間を宣言するくらいならば、複数のファイルに分割した方が良いのではないかという気がします。
何か便利な使い道があるのかもしれませんが。

ラベル: