`Assert` в `xUnit` — это ключевой компонент в процессе модульного тестирования. Он используется для проверки того, выполняются ли определенные условия в коде, который вы тестируете. В общем смысле, `Assert` — это набор методов, которые позволяют сравнивать фактические результаты работы кода с ожидаемыми результатами. Если результаты не совпадают, `Assert` генерирует исключение, что приводит к провалу теста. 1. **Assert.Equal(expected, actual, message)** - Проверяет равенство `expected` и `actual`. - Если они не равны, тест провалится. ```csharp Assert.Equal(5, actualValue); ``` 2. **Assert.True(condition, message)** - Проверяет, что `condition` истинно. - Если `condition` ложно, тест провалится. ```csharp Assert.True(isValid, "isValid должно быть истинным"); ``` 3. **Assert.False(condition, message)** - Проверяет, что `condition` ложно. - Если `condition` истинно, тест провалится. ```csharp Assert.False(isInvalid, "isInvalid должно быть ложным"); ``` 4. **Assert.NotNull(object, message)** - Проверяет, что объект не `null`. - Если объект `null`, тест провалится. ```csharp Assert.NotNull(myObject, "myObject не должен быть null"); ``` 5. **Assert.Throws\<ExceptionType\>(action, message)** - Проверяет, что вызов `action` генерирует исключение типа `ExceptionType`. - Если исключение не выбрасывается или его тип отличается, тест провалится. ```csharp Assert.Throws<ArgumentException>(() => MyMethod(), "Должно быть выброшено исключение ArgumentException"); ``` 6. **Assert.Contains(expectedSubstring, actualString)** - Проверяет, что строка `actualString` содержит подстроку `expectedSubstring`. - Если подстрока не найдена, тест провалится. ```csharp Assert.Contains("expected", actualString, "Строка должна содержать подстроку 'expected'"); ``` 7. **Assert.DoesNotContain(expectedSubstring, actualString)** - Проверяет, что строка `actualString` не содержит подстроку `expectedSubstring`. - Если подстрока найдена, тест провалится. ```csharp Assert.DoesNotContain("notExpected", actualString, "Строка не должна содержать подстроку 'notExpected'"); ``` 8. **Assert.Empty(collection)** - Проверяет, что коллекция пуста. - Если в коллекции есть элементы, тест провалится. ```csharp Assert.Empty(myCollection, "Коллекция должна быть пустой"); ``` 9. **Assert.NotEmpty(collection)** - Проверяет, что коллекция не пуста. - Если коллекция пуста, тест провалится. ```csharp Assert.NotEmpty(myCollection, "Коллекция не должна быть пустой"); ``` 10. **Assert.InRange(value, low, high)** - Проверяет, что `value` находится в заданном диапазоне между `low` и `high`. - Если значение вне диапазона, тест провалится. ```csharp Assert.InRange(number, 1, 10, "Число должно быть в диапазоне от 1 до 10"); ``` 11. **Assert.NotInRange(value, low, high)** - Проверяет, что `value` не находится в заданном диапазоне между `low` и `high`. - Если значение в диапазоне, тест провалится. ```csharp Assert.NotInRange(number, 1, 10, "Число не должно быть в диапазоне от 1 до 10"); ``` 12. **Assert.Same(expectedObject, actualObject)** - Проверяет, что два объекта ссылаются на один и тот же экземпляр. - Если это разные экземпляры, тест провалится. ```csharp Assert.Same(expectedObject, actualObject, "Объекты должны быть одним и тем же экземпляром"); ``` 13. **Assert.NotSame(expectedObject, actualObject)** - Проверяет, что два объекта не ссылаются на один и тот же экземпляр. - Если это один и тот же экземпляр, тест провалится. ```csharp Assert.NotSame(expectedObject, actualObject, "Объекты не должны быть одним и тем же экземпляром"); ``` Это лишь часть методов, доступных в `Assert` классе `xUnit`. В зависимости от ситуации, вы можете выбрать наиболее подходящий метод для проверки утверждений в ваших тестах.