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