`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`. В зависимости от ситуации, вы можете выбрать наиболее подходящий метод для проверки утверждений в ваших тестах.