Visual Studio 2008使ってもいろいろな事情で.NET Framework 2.0プロジェクトしか作らせてもらえないという向きもあるかもしれません。そんな場合に単体テストプロジェクトで使ってみるといいかもしれません。
public List<string> foo_func() { List<string> bar = new List<string>(); ... return bar; } [TestMethod] public void foo_functest() { List<string> expected = new List<string>{ "...","...", }; List<string> actual = target.foo_func(); IEnumerable<string> result = actual.Except(expected); if(result.count != 0){ Assert.Fail("結果が一致しませんでした"); } }
こんな感じ。順番も重要ということになればこれでは無理ですが、大抵内容が一致していればいいはずなのでこのくらいでいいかなと。先日の日記で、個人的に「StartWith()使えば…厳密には同じではないかも」という突っ込みをいただきました。や、そんなメソッドもありましたね(^^;;。
それからこれも完全に忘れていましたが、正規表現のRegexクラスにあるIsMatch()なんてのもばっちり使えますね。考えてみたら私の用途ではほとんどLINQにIsMatch()使うだけでカバーできてしまうかもしれません。
ところで日本語メソッドに対して「単体テストを作る」を実施すると、作成された単体テストメソッドの末尾(上でいえばfoo_functest()の次)に変な文字?がついてしまって、そのあとの識別子が認識してくれなくなるという現象が出てきました。どんなときに再現できるかちょっとやってみます。