以下のコードは、統合環境では例外をスローしていますが、単体テストではスローしていません。基本的に、いくつかの XML 要素 (linq-2-sql XElement) を属性値で並べ替えています。すべてのノードに属性が定義されています。
IEnumerable<XElement> elements = ...; // elementes are of the form<recipe name="something">
elements.OrderBy(e => e.Attribute("name"))
スローされる例外は、「少なくとも 1 つのオブジェクトは IComparable を実装する必要があります」です。コードは、次のいずれかの場合で動作するように修正できます。
IEnumerable<XElement> elements = ...; // elementes are of the form<recipe name="something">
elements.OrderBy(e => e.Attribute("name").Value)
しかし、デバッグ環境で実行すると例外がスローされるのに、単体テストからは例外がスローされないのはなぜでしょうか? 私のテスト ライブラリが使用するいくつかのユーティリティに予期しない副作用があるのではないかと心配していますが、何も見つかりません。何を探すべきですか?
テスト環境では、elements.First().Attribute("name") は null ではなく、elements.First().Attribute("name") は IComparable が null であるため、どちらの場合も XAttribute は IComparable を実装しないことに注意してください。 .