NUnit for Portable Class 库测试
NUnit for Portable Class Library tests
尝试 运行 测试使用 NUNit 在常规 PCL 库中编写的测试。它只是一个空项目,只有一个测试什么都不做。
NUnit 控制台 运行ner 显示消息
The NUnit 3.0 driver does not support the portable version of NUnit. Use a platform specific runner.
并且 Resharper 运行ner 崩溃并显示消息
Unit Test Runner failed to run tests
和堆栈跟踪:
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\work282fe47e6c6213\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\work282fe47e6c6213\Psi.Features\UnitTesting\nUnit\Runner30\Src\BuiltInNUnitRunner.cs:line 623
根据 this 的评论,PCL 应该可以,但没有。如果我们在没有 Xamarin 的情况下使用 PCL,执行测试的选项是什么?
要 运行 可移植测试,您需要使用 NUnitLite to create a self-executing test runner. Basically, you create a .NET 4.5.x console application, reference NUnitLite and your test assembly. You then run the console application to run your tests. See Testing .NET Core using NUnit 3 作为步骤,除了它使用 .NET Core 而不是 .NET 4.5 来 运行 测试。
如果您正在测试的程序集是 PCL 但目标是 .NET 4.5,则更简单的方法是将测试程序集创建为 .NET 4.5.x 并引用 PCL 正在测试的组件。这将使您的测试引用 NUnit 框架的完整版本,并允许您 运行 在 Visual Studio 中或使用 Resharper 进行测试。仅仅因为您正在处理的代码是 PCL,并不意味着您的测试需要是 PCL.
尝试 运行 测试使用 NUNit 在常规 PCL 库中编写的测试。它只是一个空项目,只有一个测试什么都不做。
NUnit 控制台 运行ner 显示消息
The NUnit 3.0 driver does not support the portable version of NUnit. Use a platform specific runner.
并且 Resharper 运行ner 崩溃并显示消息
Unit Test Runner failed to run tests
和堆栈跟踪:
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\work282fe47e6c6213\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\work282fe47e6c6213\Psi.Features\UnitTesting\nUnit\Runner30\Src\BuiltInNUnitRunner.cs:line 623
根据 this 的评论,PCL 应该可以,但没有。如果我们在没有 Xamarin 的情况下使用 PCL,执行测试的选项是什么?
要 运行 可移植测试,您需要使用 NUnitLite to create a self-executing test runner. Basically, you create a .NET 4.5.x console application, reference NUnitLite and your test assembly. You then run the console application to run your tests. See Testing .NET Core using NUnit 3 作为步骤,除了它使用 .NET Core 而不是 .NET 4.5 来 运行 测试。
如果您正在测试的程序集是 PCL 但目标是 .NET 4.5,则更简单的方法是将测试程序集创建为 .NET 4.5.x 并引用 PCL 正在测试的组件。这将使您的测试引用 NUnit 框架的完整版本,并允许您 运行 在 Visual Studio 中或使用 Resharper 进行测试。仅仅因为您正在处理的代码是 PCL,并不意味着您的测试需要是 PCL.