Атрибуты - это просто метаданные типа, поэтому они ничего не делают, если окружающая инфраструктура не заставляет их что-то делать (или еще лучше: окружающая инфраструктура делает что-то на основе информации в этих атрибутах). Это то, что ASP.NET MVC делает, когда выполняет запрос.
Это не то, что вы делаете, когда вы создаете и вызываете действие контроллера в модульном тесте, поэтому, если вы не хотите идти на все, чтобы вызвать действие контроллера с помощью ControllerActionInvoker (в этот момент тест перестает быть единичным и становится интеграционным тестом) вы не можете напрямую протестировать поведение , подразумеваемое атрибутом.
Однако вы можете написать модульный тест, который проверяет, правильно ли атрибут украшает действие контроллера:
var attributes = typeof(UserAdminController)
.GetMethod("AddUser").GetCustomAttributes(true);
var result = attributes.OfType<AuthorizeAttribute>().Single();
Assert.AreEqual("UserAdmin", result.Roles);