閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

NUnit2.6でTestCaseにint以外の整数を使う場合は整数リテラルで型を明示する必要がある

[TestCase(1)]
public void Test(ulong n) {
 // ...
}

などと書いた場合、整数を書くとintと認識されるので:

Test(1), Failed: System.ArgumentException : 型 'System.Int32' のオブジェクトを型 'System.UInt64' に変換できません。

というエラーが出てテストが実行できない。

[TestCase(1ul)]
public void Test(ulong n) {
 // ...
}

としてあげると良いらしい。まあ、そりゃそうか。NUnitの中ではメソッド呼び出し時にリフレクションを使っているっぽく、型が違うとそこでエラーになるみたい。

2.4.4.2 整数リテラル (C#)