通过断言状态代码返回单元测试 .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 请求或类似请求)生成的,那么它应该是一个集成测试。
这是因为辅助基础设施可能并不总是正常运行并且 运行 这可能会导致测试失败。
单元测试不应该依赖这些东西。
无论如何,单元测试必须始终可重现,并且不得依赖外部资源。
更新:
单元测试和集成测试通常可以使用单元测试平台的相同逻辑来完成。
但是,您必须考虑到有资格作为集成测试(见上文)的测试可能会由于外部原因而失败。
这意味着您必须以不同的方式对待任一测试的结果。
我强烈建议将您的集成测试放入一个单独的测试程序集中,如果您是 运行 提交时的构建管道,则不会执行该测试程序集。
如果您的集成测试由于门控签入环境中的外部因素而失败,它将阻止任何开发人员向分支提交更改,直到修复辅助基础结构以符合您的测试。
这是您希望不惜一切代价避免的情况,因为它会迫使开发人员停止活动,直到您建筑物中另一台服务器的网络问题得到解决。
我是单元测试的新手 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 请求或类似请求)生成的,那么它应该是一个集成测试。 这是因为辅助基础设施可能并不总是正常运行并且 运行 这可能会导致测试失败。
单元测试不应该依赖这些东西。 无论如何,单元测试必须始终可重现,并且不得依赖外部资源。
更新:
单元测试和集成测试通常可以使用单元测试平台的相同逻辑来完成。 但是,您必须考虑到有资格作为集成测试(见上文)的测试可能会由于外部原因而失败。 这意味着您必须以不同的方式对待任一测试的结果。
我强烈建议将您的集成测试放入一个单独的测试程序集中,如果您是 运行 提交时的构建管道,则不会执行该测试程序集。
如果您的集成测试由于门控签入环境中的外部因素而失败,它将阻止任何开发人员向分支提交更改,直到修复辅助基础结构以符合您的测试。 这是您希望不惜一切代价避免的情况,因为它会迫使开发人员停止活动,直到您建筑物中另一台服务器的网络问题得到解决。