NUnit for Portable Class Library测试

时间:2016-05-18 12:58:37

标签: .net unit-testing xamarin nunit portable-class-library

尝试使用NUNit运行在常规PCL库中编写的测试。它只是一个空项目,单一测试无效。

NUnit控制台运行器显示消息

  

NUnit 3.0驱动程序不支持NUnit的可移植版本。使用特定于平台的跑步者。

和Resharper runner正在崩溃并显示消息

  

单元测试运行器无法运行测试

和堆栈跟踪:

.controller('TestController', function ($state, $scope, AuthService, UserService) {
  var users = UserService.getUsers();

  for (var key in users) {
    users[key].name = "test";
    users[key].details = someArray;
  }

  $scope.gototab = function () {
    UserService.setUsers(users);
    alert(angular.toJson(UserService.getUsers()));
    $state.go('tab');
  };
})

.controller('Test2Controller', function ($scope, AuthService, UserService) {
  var users = UserService.getUsers();
  alert(angular.toJson(users));
})

.service('UserService', function () {
  var users = [];
  return {
    getUsers: function () {
      return users;
    },
    setUsers: function (value) {
      users = value;
    }
  };
}

根据this评论PCL应该有效,但事实并非如此。如果我们在没有Xamarin的情况下使用PCL,那么执行测试的选项是什么?

1 个答案:

答案 0 :(得分:6)

要运行可移植测试,您需要使用NUnitLite来创建自执行测试运行器。基本上,您创建一个.NET 4.5.x控制台应用程序,引用NUnitLite和您的测试程序集。然后运行控制台应用程序以运行测试。有关步骤,请参阅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。