Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Asp.net mvc 我们是否只在ASP.NETMVC应用程序中测试控件类?_Asp.net Mvc_Unit Testing - Fatal编程技术网

Asp.net mvc 我们是否只在ASP.NETMVC应用程序中测试控件类?

Asp.net mvc 我们是否只在ASP.NETMVC应用程序中测试控件类?,asp.net-mvc,unit-testing,Asp.net Mvc,Unit Testing,我想用最好的方式来创建这个web应用程序。我遇到的所有单元测试示例都是针对控制器的。我知道视图很难测试,可能模型层需要类似DBUNit的东西。你的想法是什么?这是问题的一部分;将视图与应测试的代码分开。但是,您应该测试任何“有趣”的逻辑,无论是在控制器层还是服务层,等等。您可以测试您的逻辑。您应该测试您可以测试的所有逻辑。除了查看aspx和ascx文件之外,这些文件几乎包含了您的所有其他代码 如今,MVC中的M通常被理解为ViewModel,这是一种行为有限且自包含的哑数据结构。控制器的部分职责

我想用最好的方式来创建这个web应用程序。我遇到的所有单元测试示例都是针对控制器的。我知道视图很难测试,可能模型层需要类似DBUNit的东西。你的想法是什么?

这是问题的一部分;将视图与应测试的代码分开。但是,您应该测试任何“有趣”的逻辑,无论是在控制器层还是服务层,等等。

您可以测试您的逻辑。

您应该测试您可以测试的所有逻辑。除了查看aspx和ascx文件之外,这些文件几乎包含了您的所有其他代码

如今,MVC中的M通常被理解为ViewModel,这是一种行为有限且自包含的哑数据结构。控制器的部分职责是从基础域模型到视图模型来回映射

您也可以使用普通的单元测试框架对域模型进行单元测试


测试驱动开发为您提供了获得尽可能高的测试覆盖率的最佳保证。

应用程序中任何未经测试的内容都很可能出现错误或在某些更改后出现错误。另一方面,您将无法测试所有内容

通常要做的是更多地测试更关键和最可能包含bug的内容

一旦控制器通常包含一些逻辑,它们就可能包含bug,并且在运行程序时这些bug不太容易被捕获。我相信几乎任何非视觉的东西都更有可能包含错误,但通常更容易测试

UI通常是手动测试的,即使在开发的早期阶段,只要运行应用程序并查看正在发生的事情就是一种测试,它们通常很难自动测试。但是,如果您有一个web应用程序,并且担心它在各种浏览器和分辨率上是否运行良好,我建议您进行一些Selenium测试


但通常,问几个问题是很有用的:如果这一部分[关键性]中有bug,我会有多糟糕?此部分包含错误[风险]的可能性有多大?测试这部分[测试开发时间]有多难?使测试保持最新[测试维护时间]有多困难?。这些问题的答案可能是决定测试什么或不测试什么的一个很好的起点。

对于是否测试视图,您会得到不同的意见。许多人会争辩说,由于UI趋向于频繁更改,因此对视图的单元测试是脆弱的,弊大于利。其他人会争辩说,一切都必须经过单元测试,包括视图

至于只测试控制器,这可能是个坏主意。应用程序最重要的部分域应该是大多数业务逻辑所在的位置,因此必须进行测试。诸如数据访问、服务等也应该进行测试,并且可能不会驻留在控制器中

简言之,不,控制器不是唯一需要单元测试的东西。但是,您可能不需要对视图进行单元测试