我下面有一些代码在集成环境中引发异常,但在我的单元测试中却没有。基本上,我正在按属性值对一些 XML 元素(linq-2-sql XElement)进行排序。所有节点都定义了属性。
IEnumerable<XElement> elements = ...; // elementes are of the form<recipe name="something">
elements.OrderBy(e => e.Attribute("name"))
抛出的异常是“至少一个对象必须实现 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") as IComparable 为 null,因此在这两种情况下 XAttribute 都没有实现 IComparable .