Модульное тестирование .net проекта путем возвращения кода статуса - PullRequest
1 голос
/ 17 октября 2019

Я новичок в модульном тестировании и xunit. Я пишу модульные тесты, которые утверждают, что коды состояния возвращаются. Это что-то входит в объем Интеграционного теста или это логика тестирования юнит-тестирования?

Например, я утверждаю ответ функции get следующим образом:

[Fact]
public async Task MyTest()
{
    SearchParam searchParam = new SearchParam() { };
    var bool= false;
    var bool2 = false;
    var actionResult = await _controller.Myfunction(searchParam, bool, bool2).ConfigureAwait(false);
    var okResult = actionResult.Result as OkObjectResult;
    Assert.True(okResult.StatusCode == 200, "Ok");
}

1 Ответ

1 голос
/ 17 октября 2019

Если этот код состояния был сгенерирован путем доступа к вторичной инфраструктуре (с помощью веб-запроса или подобного), то это должен быть интеграционный тест. Это связано с тем, что вторичная инфраструктура может не всегда работать и работать, что может привести к сбою тестов.

Модульные тесты не должны зависеть от таких вещей. Модульный тест всегда должен быть воспроизводимым, независимо от того, что и не должен зависеть от внешних ресурсов.

Обновление:

Как модульные тесты, так и интеграционные тесты обычно можно выполнять с использованиемта же логика вашей платформы модульного тестирования. Однако вы должны принять во внимание, что тест, который квалифицируется как интеграционный тест (см. Выше), может потерпеть неудачу по внешним причинам. Это означает, что вы должны обрабатывать результаты любого теста по-разному.

Я настоятельно рекомендую поместить ваши интеграционные тесты в отдельную сборку, которая не выполняется, если вы запускаете конвейер сборки при фиксации.

Если ваши интеграционные тесты не пройдут из-за внешних факторов в закрытой среде регистрации, это помешает любому разработчику вносить изменения в ветку, пока вторичная инфраструктура не будет исправлена ​​для соответствия вашим тестам. Эту ситуацию вы бы хотели избежать любой ценой, поскольку она может заставить разработчиков бездействовать до тех пор, пока не будут решены сетевые проблемы с другим сервером в вашем здании.

...