Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过断言状态代码返回对.net项目进行单元测试_C#_.net_Unit Testing_Xunit.net - Fatal编程技术网

C# 通过断言状态代码返回对.net项目进行单元测试

C# 通过断言状态代码返回对.net项目进行单元测试,c#,.net,unit-testing,xunit.net,C#,.net,Unit Testing,Xunit.net,我不熟悉单元测试和xunit。我正在编写单元测试来断言返回的状态代码。这是在集成测试的范围内还是符合单元测试逻辑 例如,我断言get函数的响应如下: [事实] 公共异步任务MyTest() { SearchParam SearchParam=新的SearchParam(){}; var bool=假; var bool2=假; var actionResult=await\u controller.Myfunction(searchParam,bool,bool2).ConfigureAwait

我不熟悉单元测试和
xunit
。我正在编写单元测试来断言返回的状态代码。这是在集成测试的范围内还是符合单元测试逻辑

例如,我断言get函数的响应如下:

[事实]
公共异步任务MyTest()
{
SearchParam SearchParam=新的SearchParam(){};
var bool=假;
var bool2=假;
var actionResult=await\u controller.Myfunction(searchParam,bool,bool2).ConfigureAwait(false);
var okResult=actionResult.Result作为OkObjectResult;
Assert.True(okResult.StatusCode==200,“Ok”);
}

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

单元测试不应该依赖于这些东西。 无论发生什么情况,单元测试都必须是可复制的,并且不能依赖于外部资源

更新:

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

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

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

单凭断言并不能说明集成和单元测试之间的区别。您是否模拟控制器的所有依赖项,并确保它遵循给定特定输入的正确逻辑流以获得200?那么这可能是一个单元测试。控制器操作是否通过控制器的所有服务依赖项执行?那么它可能是一个集成测试。你能分享你想要单元测试的代码和测试代码吗?在有限的信息量下,不可能给出任何建议。我共享了测试方法的代码。感谢您的帮助是的,状态代码是由另一个服务生成的,它使这些测试在此上下文中进行集成测试。但是我怎样才能对这样的方法使用unittest逻辑呢?您可以编写一个测试,使请求与单元测试中的任何其他act部分一样,然后对从请求接收到的状态代码进行断言。就像你已经做的一样。感谢你澄清单元测试和集成测试之间的区别