Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# MVC-单元测试是错误的吗?_C#_Asp.net Mvc_Unit Testing_Tdd - Fatal编程技术网

C# MVC-单元测试是错误的吗?

C# MVC-单元测试是错误的吗?,c#,asp.net-mvc,unit-testing,tdd,C#,Asp.net Mvc,Unit Testing,Tdd,在为ASP.NETMVC项目练习TDD时,我遇到了许多场景,在这些场景中,我编写测试以确保特定操作返回正确的视图或具有特定的属性([ChildActionOnly]等)。(事实上,我在这里发现了许多有趣的帖子,都是关于有用的扩展方法来帮助实现这一点的) 几年前,当我在一门课程上第一次介绍单元测试和TDD的概念时,重点是测试应该专注于测试用户所需特性和功能背后的逻辑——如果你愿意,核心项目“需求” 我的问题是——如果是这样的话,那么低级测试是否检查要呈现的视图文件是否正确,或者具有特定属性的操作是

在为ASP.NETMVC项目练习TDD时,我遇到了许多场景,在这些场景中,我编写测试以确保特定操作返回正确的视图或具有特定的属性(
[ChildActionOnly]
等)。(事实上,我在这里发现了许多有趣的帖子,都是关于有用的扩展方法来帮助实现这一点的)

几年前,当我在一门课程上第一次介绍单元测试和TDD的概念时,重点是测试应该专注于测试用户所需特性和功能背后的逻辑——如果你愿意,核心项目“需求”


我的问题是——如果是这样的话,那么低级测试是否检查要呈现的视图文件是否正确,或者具有特定属性的操作是否真正包含了单元测试方法的全部内容?我写测试是出于错误的原因(即简单地保护我自己和其他同事不犯重构错误),还是这些是有价值的单元测试的有效案例?

如果处理程序方法可以根据某些逻辑返回两个(或多个)视图中的一个,那么断言正确视图的单元测试将是有用的。根据逻辑插入特定属性的处理程序方法也是如此

我写测试的原因是否错误(即仅仅是为了保护其他人) 同事可能会犯重构错误),或者这些情况是否有效 有价值的单元测试


捕捉回归错误是单元测试的好处之一,尤其在重构时非常有用。如果您在执行重构时无意中更改了返回的视图,这对于尽早捕获非常有用,而不是等待仅在应用程序运行时运行的测试。

如果您的操作根据某些逻辑返回不同的视图(或操作结果)。写一个测试

如果总是返回View(),则不要返回


如果返回的视图的名称与操作的名称不同,那么您可能会认为编写测试是个好主意

视情况而定。举一个例子:检查一个动作是否具有特定属性是可以的,但最好编写一个测试来验证某个行为是否按预期运行,如果该属性丢失,则测试将失败

也就是说,最终你的测试是一个安全网。如果它有一个合理的机会来防止bug在将来的某个时候溜进来,那么它就是在做它的工作


如果这是一个简单的测试,它的开销很低,并且在将来被任意破坏的可能性很低,那么就去做吧。我宁愿有太多的测试也不要太少。

事实上,你的测试应该是测试你的逻辑。这不应该消失。然而,理想情况下,您应该为可能出错的任何内容编写测试。例如,确保所有需要保护的方法都具有适当的Authorize属性。这是一个安全测试


最终,你决定什么对你有用来测试。

我只想指出,与其“保护”同事,不如把时间花在“指导”他们上。你的同事可能很精明,只要稍加指导,每个人的境况都会好得多。但是,我并不是对单元测试说不。。。在进行更改之后进行回归测试总是很好的。