尝试使用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,那么执行测试的选项是什么?
答案 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。