通过断言状态代码返回单元测试 .net 项目

Unit testing .net project by Asserting Status Code returning

我是单元测试的新手 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");
}

如果该状态代码是通过访问辅助基础设施(发出 Web 请求或类似请求)生成的,那么它应该是一个集成测试。 这是因为辅助基础设施可能并不总是正常运行并且 运行 这可能会导致测试失败。

单元测试不应该依赖这些东西。 无论如何,单元测试必须始终可重现,并且不得依赖外部资源。

更新:

单元测试和集成测试通常可以使用单元测试平台的相同逻辑来完成。 但是,您必须考虑到有资格作为集成测试(见上文)的测试可能会由于外部原因而失败。 这意味着您必须以不同的方式对待任一测试的结果。

我强烈建议将您的集成测试放入一个单独的测试程序集中,如果您是 运行 提交时的构建管道,则不会执行该测试程序集。

如果您的集成测试由于门控签入环境中的外部因素而失败,它将阻止任何开发人员向分支提交更改,直到修复辅助基础结构以符合您的测试。 这是您希望不惜一切代价避免的情况,因为它会迫使开发人员停止活动,直到您建筑物中另一台服务器的网络问题得到解决。