J'ai un code ci-dessous qui lance une exception dans les environnements d'intégration mais pas dans mes tests unitaires. Fondamentalement, je suis en train de trier certains éléments XML (linq-2-sql XElement) par une valeur d'attribut. Tous les nœuds ont l'attribut défini. L'exception levée est "Au moins un objet doit implémenter IComparable". Le code peut être fixé à travailler dans les deux cas avec:XAttribute implémentant IComparable lors des tests, mais pas quand live
IEnumerable<XElement> elements = ...; // elementes are of the form<recipe name="something">
elements.OrderBy(e => e.Attribute("name").Value)
Mais je me demande pourquoi ce lancer une exception lorsqu'il est lancé dans un environnement de débogage, mais pas de mes tests unitaires? J'ai peur que certains utilitaires utilisés par ma bibliothèque de tests aient des effets secondaires inattendus, mais je ne trouve rien. Que devrais-je rechercher? Notez que dans l'environnement de test, elements.First(). Attribute ("name") n'est pas null mais elements.First(). L'attribut ("name") comme IComparable est null, donc dans les deux cas, le XAttribute n'implémente pas IComparable.
Dans le cas où l'exception a été levée, je vérifiais que x .Attribute ("nom") n'a pas évalué à null. Le fait que l'ajout de x.Attribute ("name"). Value n'ait pas généré d'exception montre également que null n'était pas le problème. –