2017-05-26 2 views
2

Ich entwickle eine Anwendung mit Dotnet-Core. Wenn ich versuche, die Unit-Tests laufen zu lassen, habe ich die folgende Meldung angezeigt:dotnet core: Unit-Tests können nicht ausgeführt werden

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

Ich habe bereits meine CSPROJ Dateien, habe ich uninstaled und instaliert wieder Dotnet Kern, versucht, die Projekte für den Wiederaufbau, versucht die Wiederherstellung Pakete wieder, suchte nach Codefehlern, aber ich habe keine Ahnung, was passiert.

Ich benutze Ubuntu 16.04.

Das Projekt, das das Problem konfrontiert ist hier verfügbar: https://github.com/andremteixeira/Personal-Accounting

Antwort

6

Sie einen Stapelüberlauf Ausnahme erstellt haben, die leider völlig den Test Host-Prozess stürzt ab ..

Das Problem ist:

  1. Jeder Bediener heißt
  2. Dies ruft CheckNullity
  3. CheckNullity hat einen a == null Vergleich
  4. Das die benutzerdefinierte bool operator == (Money a, Money b)
  5. die zu bool IsEquivalent(Money a, Money b)
  6. leitet ruft die für a != null
  7. einen Scheck hat, die den benutzerdefinierten Operator bool operator != (Money a, Money b)
  8. die für a == null
  9. einen Scheck hat ruft
  10. Dies landet bei 4. wieder

wenn ich

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

mit

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

in CheckNullity ersetzen bricht es den Zyklus und alle Tests laufen.

+0

Wie haben Sie es herausgefunden? –

+2

'Dotnet Test -d diag.log' druckte eine Stack-Overflow-Ausnahme (leider ohne Stack-Trace), also suchte ich nach Orten, die einen verursachen könnten .. –

+0

wow. Das würde viel Erfahrung mit der Sprache erfordern. Vielen Dank! –

Verwandte Themen