2017-09-18 1 views
0

Ich habe gerade begonnen, Travis CI zu verwenden, um ein Projekt auf Git-Hub zu erstellen, aber habe Schwierigkeiten, NUnit-Tests erfolgreich ausgeführt zu bekommen. Ich habe eine System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. erlebt.Ausführen von NUnit-Tests auf Travis für dot net core 2.0 schlägt fehl - System.Reflection.ReflectionTypeLoadException

Mein run-test.sh wie folgt aussieht:

nunit-console Code/Shared/ORMS.Shared.SharedKernel.UnitTests/bin/Release/netcoreapp2.0/ORMS.Shared.SharedKernel.UnitTests.dll 

, die der richtige Weg zu meinem Testprojekt sein sollten. Mein .travis.yml wie folgt aussieht:

language: csharp 
dist: trusty 
sudo: required 
mono: none 
dotnet: 2.0.0 
solution: OpenRMS.sln 
branches: 
    only: 
    - master-net-core 
before_install: 
    - sudo apt-get install nunit-console 
before_script: 
    - chmod +x build.sh 
    - chmod +x run-tests.sh 
script: 
    - ./build.sh 
    - ./run-tests.sh 

die den NUnit Test Runner sollte geladen, die sie von the output zu tun scheint, aber es ist eine andere Abhängigkeit Last Frage, die ich nicht auf den Boden bekommen.

Ausgang fehlgeschlagen:

$ ./run-tests.sh 
NUnit-Console version 2.6.0.0 
Copyright (C) 2002-2012 Charlie Poole. 
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. 
Copyright (C) 2000-2002 Philip Craig. 
All Rights Reserved. 
Runtime Environment - 
    OS Version: Unix 4.4.0.93 
    CLR Version: 4.0.30319.17020 (Mono 4.0 (3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1))) 
ProcessModel: Default DomainUsage: Single 
Execution Runtime: mono-4.0 
Unhandled Exception: 
System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. 
Server stack trace: 
    at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool) 
    at System.Reflection.Assembly.GetExportedTypes() [0x00000] in <filename unknown>:0 
    at NUnit.Core.CoreExtensions.InstallAdhocExtensions (System.Reflection.Assembly assembly) [0x00000] in <filename unknown>:0 
    at NUnit.Core.Builders.TestAssemblyBuilder.Load (System.String path) [0x00000] in <filename unknown>:0 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build (System.String assemblyName, Boolean autoSuites) [0x00000] in <filename unknown>:0 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build (System.String assemblyName, System.String testName, Boolean autoSuites) [0x00000] in <filename unknown>:0 
    at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
    at NUnit.Core.TestSuiteBuilder.Build (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
    at NUnit.Core.SimpleTestRunner.Load (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
    at NUnit.Core.ProxyTestRunner.Load (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
    at NUnit.Core.ProxyTestRunner.Load (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
    at NUnit.Core.RemoteTestRunner.Load (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
    at (wrapper xdomain-dispatch) NUnit.Core.RemoteTestRunner:Load (object,byte[]&,byte[]&) 
Exception rethrown at [0]: 
    at (wrapper xdomain-invoke) NUnit.Core.RemoteTestRunner:Load (NUnit.Core.TestPackage) 
    at NUnit.Util.TestDomain.Load (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 
The command "./run-tests.sh" exited with 156. 

Ich denke, der Schlüssel Linie ist ...

at NUnit.Util.TestDomain.Load (NUnit.Core.TestPackage package) [0x00000] in <filename unknown>:0 

... so ist es so aussieht, als ob es eine unbekannte Datei geladen wird?

Alle Vorschläge, wie Sie dies eingrenzen können. Ich bin Travis sehr neu und benutze normalerweise MSTest bei der Arbeit, aber ich möchte NUnit verwenden, da es einige Funktionen hat, von denen ich glaube, dass MSTest noch implementiert werden muss.

Antwort

2

Sie versuchen, .NET Core-Komponententests von einer mono-basierten Version des NUnit-Konsolenlaufers aus auszuführen, die .NET Core-DLLs nicht unterstützt (siehe GitHub issue).

Verwenden Sie zum Ausführen von Tests dotnet test für das Testprojekt oder dotnet vstest für die Veröffentlichungsausgabe, die durch Ausführen von dotnet publish im Testprojekt erstellt wurde.

+0

Vielen Dank. Das werde ich heute Abend zuhause versuchen. Ich habe ursprünglich 'dotnet test' versucht, aber das schien andere Probleme zu haben, weshalb ich den Track gewechselt habe. – Dib

+2

Ich habe eine PR auf Ihrem GitHub-Projekt erstellt, um zu sehen, ob es funktioniert –

+3

Die PR nur gut gebaut und führte die Tests –

Verwandte Themen