2016-05-18 13 views
5

Cố gắng chạy thử nghiệm được viết trong thư viện PCL thông thường bằng NUNit. Nó chỉ là một dự án trống rỗng, với một thử nghiệm duy nhất không làm gì cả.NUnit để kiểm tra thư viện lớp học di động

NUnit console Á hậu cho thấy tin nhắn

Người tài xế NUnit 3.0 không hỗ trợ phiên bản di động của NUnit. Sử dụng một nền tảng cụ thể Á hậu.

và Resharper Á hậu là đâm với thông điệp

Unit Test Runner thất bại trong việc chạy thử nghiệm

và một 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 

Theo this bình luận PCL nên làm việc, nhưng nó không. Nếu chúng ta đang sử dụng PCL mà không có Xamarin thì các tùy chọn để thực hiện các thử nghiệm là gì?

Trả lời

6

Để chạy thử nghiệm di động, bạn cần sử dụng NUnitLite để tạo một thử nghiệm tự thực thi. Về cơ bản, bạn tạo một ứng dụng giao diện .NET 4.5.x, tham khảo NUnitLite và assembly thử nghiệm của bạn. Sau đó, bạn chạy ứng dụng bảng điều khiển để chạy thử nghiệm của mình. Xem Testing .NET Core using NUnit 3 cho các bước ngoại trừ việc nó sử dụng .NET Core thay vì .NET 4.5 để chạy thử nghiệm.

Nếu lắp ráp bạn đang thử nghiệm là PCL nhưng có .NET 4.5 làm mục tiêu, cách tiếp cận dễ dàng hơn là tạo lắp ráp thử nghiệm của bạn dưới dạng .NET 4.5.x và tham khảo lắp ráp PCL trong thử nghiệm. Điều này sẽ gây ra các thử nghiệm của bạn để tham khảo phiên bản đầy đủ của khung NUnit và cho phép bạn chạy thử nghiệm của bạn trong Visual Studio hoặc với Resharper. Chỉ vì mã bạn đang làm là PCL, điều đó không có nghĩa là các bài kiểm tra của bạn cần phải là PCL.

Các vấn đề liên quan