Nunit: Les différences de culture sur .NET Core sur non-Windows provoquent des échecs de test

Créé le 11 déc. 2017  ·  4Commentaires  ·  Source: nunit/nunit

(@nunit/framework-team Nous devrons nous en occuper avant 3.10 ou bien extraire la version .NET Standard 2.0.)

Ces tests sont spécifiques à Windows ; .NET Core sur d'autres systèmes d'exploitation provoque leur échec. Mono, cependant, réussit les tests, il semble donc produire le comportement de Windows avec nos DLL .NET Framework sur d'autres systèmes d'exploitation. Nos DLL .NET Standard sur .NET Core sont incompatibles avec nos DLL .NET Framework sur Mono.

https://github.com/dotnet/corefx/issues/11221 indique que le format de la date doit être conforme à la conception du système d'exploitation.
https://github.com/dotnet/corefx/issues/17052 semble avoir la même conclusion pour les comparaisons de chaînes.

  • Doit-on adopter la même position que .NET Core et s'attendre à des résultats différents sur Windows et Ubuntu ?

  • Devrions-nous adopter la même position que (je pense) Mono et essayer de polyfiller le comportement de Windows sur d'autres systèmes d'exploitation d'une manière ou d'une autre (bien que cela semble être un faible retour sur investissement) ?

  • Nous n'avons pas encore fait le travail pour activer PlatformAttribute sur .NET Standard. Devrions-nous supprimer la version 3.10 et supprimer les API de culture de NUnit, ou envisager d'ajouter à la fois des API de détection de plate-forme et de culture ?

Failed : NUnit.Framework.Attributes.SetCultureAttributeTests.UseWithParameterizedTest()
  Expected string length 19 but was 17. Strings differ at index 6.
  Expected: "01.06.2010 00:00:00"
  But was:  "01.06.10 00:00:00"
  -----------------^

Failed : NUnit.Framework.Constraints.SubstringConstraintTests.SpecifyComparisonType(" ss ","ß",CurrentCulture,True)
  Expected: String containing "ß"
  But was:  " ss "

Failed : NUnit.Framework.Constraints.SubstringConstraintTests.SpecifyComparisonType(" ss ","ß",CurrentCultureIgnoreCase,True)
  Expected: String containing "ß"
  But was:  " ss "

Failed : NUnit.Framework.Constraints.SubstringConstraintTests.SpecifyComparisonType(" SS ","ß",CurrentCultureIgnoreCase,True)
  Expected: String containing "ß"
  But was:  " SS "

Failed : NUnit.Framework.Constraints.SubstringConstraintTests.SpecifyComparisonType(" ss ","ß",InvariantCulture,True)
  Expected: String containing "ß"
  But was:  " ss "

Failed : NUnit.Framework.Constraints.SubstringConstraintTests.SpecifyComparisonType(" ss ","ß",InvariantCultureIgnoreCase,True)
  Expected: String containing "ß"
  But was:  " ss "

Failed : NUnit.Framework.Constraints.SubstringConstraintTests.SpecifyComparisonType(" SS ","ß",InvariantCultureIgnoreCase,True)
  Expected: String containing "ß"
  But was:  " SS "
done design critical

Commentaire le plus utile

Doit-on adopter la même position que .NET Core et s'attendre à des résultats différents sur Windows et Ubuntu ?

Je pense que celui-ci, ce n'est pas le problème de NUnit à aborder.

Tous les 4 commentaires

Je serais heureux de voir une version .NET Core 2.0, même sans y ajouter de nouvelles fonctionnalités qui ne sont pas dans 1.6. C'est un travail raisonnable à fusionner, puis chaque fonctionnalité ajoutée peut être effectuée un PR à la fois.

En ce qui concerne les problèmes de culture et de chaîne, j'irais avec l'idée qu'ils sont différents sur les deux systèmes d'exploitation. Les tests peuvent utiliser un appel pour obtenir les valeurs attendues pour le système au lieu d'utiliser une constante.

Doit-on adopter la même position que .NET Core et s'attendre à des résultats différents sur Windows et Ubuntu ?

Je pense que celui-ci, ce n'est pas le problème de NUnit à aborder.

Salut,
Pour tous ceux qui souffrent de ce problème, j'ai créé une solution simple.
https://github.com/effyteva/Teva.Common.Cultures

Salut!
Peut-être que cette solution sera utile à quelqu'un : https://github.com/dotnet/corefx/issues/11221#issuecomment -572932255

Cette page vous a été utile?
0 / 5 - 0 notes