2016-05-18 9 views
5

Versuche, Tests auszuführen, die mit NUNit in eine normale PCL-Bibliothek geschrieben wurden. Es ist nur ein leeres Projekt, mit Einzeltest, der nichts tut.NUnit für Portable Class Bibliothekstests

NUnit Konsole Läufer zeigt Nachricht

Die NUnit 3.0-Treiber nicht die portable Version von NUnit unterstützen. Verwenden Sie einen plattformspezifischen Runner.

und ReSharper Läufer stürzt mit Nachricht

Unit Test Runner nicht bestandenen Tests laufen

und einen Stack-Trace:

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) 
    at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark) 
    at System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo) 
    at System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes) 
    at System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes) 
    at NUnit.Engine.Drivers.NUnit3FrameworkDriver.Load(String testAssemblyPath, IDictionary`2 settings) 
    at NUnit.Engine.Runners.DirectTestRunner.LoadPackage() 
    at NUnit.Engine.Runners.AbstractTestRunner.Load() 
    at NUnit.Engine.Runners.MasterTestRunner.LoadPackage() 
    at NUnit.Engine.Runners.AbstractTestRunner.EnsurePackageIsLoaded() 
    at NUnit.Engine.Runners.MasterTestRunner.NUnit.Engine.ITestRunner.Explore(TestFilter filter) 
    at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0() in c:\Build Agent\work\10282fe47e6c6213\Psi.Features\UnitTesting\nUnit\Runner30\Src\BuiltInNUnitRunner.cs:line 79 
    at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action) in c:\Build Agent\work\10282fe47e6c6213\Psi.Features\UnitTesting\nUnit\Runner30\Src\BuiltInNUnitRunner.cs:line 623 

Nach this Kommentar PCL sollte Arbeit, aber es tut es nicht. Wenn wir PCL ohne Xamarin verwenden, was sind die Optionen, um Tests durchzuführen?

Antwort

6

Um tragbare Tests auszuführen, müssen Sie NUnitLite verwenden, um einen selbstausführenden Test-Runner zu erstellen. Im Grunde erstellen Sie eine .NET 4.5.x-Konsolenanwendung, Referenz NUnitLite und Ihre Testassembly. Anschließend führen Sie die Konsolenanwendung aus, um Ihre Tests auszuführen. Die Schritte finden Sie unter Testing .NET Core using NUnit 3, außer dass .NET .NET anstelle von .NET 4.5 zum Ausführen der Tests verwendet wird.

Wenn die Assembly, die Sie testen, PCL ist, aber .NET 4.5 als Ziel hat, können Sie Ihre Testassembly als .NET 4.5.x erstellen und auf die zu testende PCL-Assembly verweisen. Dies führt dazu, dass Ihre Tests auf die Vollversion des NUnit-Frameworks verweisen und Sie Ihre Tests in Visual Studio oder mit Resharper ausführen können. Nur weil der Code, an dem Sie arbeiten, PCL ist, heißt das nicht, dass Ihre Tests PCL sein müssen.

Verwandte Themen