Атрибуты . Это способ добавить метаданные о методах / свойствах / интерфейсах / классах / пространствах имен для проверки во время выполнения .
Ваш пример добавляет TestFixtureSetUpAttribute к методу. Это позволяет исполнителю теста определить, какой метод в вашем классе следует запускать при настройке текстового фиксатора.
Тестовый прогон загружает вашу тестовую сборку в память во время выполнения. Затем он перечисляет классы, определенные в вашей сборке, которые были помечены определенным атрибутом (независимо от того, что NUnit использует для маркировки тестового класса). Теперь бегун знает, какие классы нужно создавать для запуска тестов. Затем он просматривает методы, определенные в классе, для определения метода, который будет запущен для настройки тестового устройства. Он ищет в каждом методе атрибут, о котором вы спрашивали. Как только он находит этот метод, он знает, что нужно запускать этот метод перед выполнением тестов / каждого теста (что бы это ни значило в NUnit).
Атрибуты предназначены для добавления информации о методе, который вы можете искать во время выполнения. Это такая вещь, когда если вам не нужно их, вы не скучаете по ним, но когда вы действительно нуждаетесь в них, OMFG - это здорово, что они доступны.
(В C # вы можете опустить «Атрибут» в имени типа. Компилятор знает, что вы говорите, например, о «SerializableAttribute», когда вы говорите [Serializable]
)