2017-05-26 4 views
2

Je développe une application utilisant le coeur dotnet. Lorsque je tente d'exécuter les tests unitaires, je reçois le message suivant:dotnet core: impossible d'exécuter des tests unitaires

The active test run was aborted. Reason: Unable to communicate with test host process. 

J'ai déjà vérifié mes fichiers .csproj, j'uninstaled et instalé core à nouveau dotnet, a essayé de reconstruire les projets, a essayé de restaurer la paquets à nouveau, recherché des erreurs de code, mais je n'ai aucune idée de ce qui se passe. Je utilise Ubuntu 16.04.

Le projet qui fait face à la question est ici: https://github.com/andremteixeira/Personal-Accounting

Répondre

6

Vous avez créé une exception de débordement de pile qui, malheureusement, se bloque complètement le processus hôte de test ..

Le problème est:

  1. Tout opérateur est appelé
  2. Cet appel CheckNullity
  3. CheckNullity a une comparaison a == null
  4. Cela invoque la coutume bool operator == (Money a, Money b)
  5. qui transmet à bool IsEquivalent(Money a, Money b)
  6. qui a un chèque de a != null
  7. qui invoque l'opérateur personnalisé bool operator != (Money a, Money b)
  8. qui a un chèque de a == null
  9. Ce terrain se termine à 4.

si je remplace

if (a == null || b == null) 

avec

if (Object.ReferenceEquals(a, null) || Object.ReferenceEquals(b, null)) 

en CheckNullity il brise le cycle et tous les tests exécuté.

+0

Comment avez-vous compris? –

+2

'dotnet test -d diag.log' a imprimé une exception de débordement de pile (malheureusement sans trace de pile) donc j'ai cherché des endroits qui pourraient en causer un. –

+0

wow. Cela aurait pris beaucoup d'expérience avec la langue. Je vous remercie! –