Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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 Web GUI的单元测试_Asp.net_Asp.net Mvc_Tdd - Fatal编程技术网

Asp.net Web GUI的单元测试

Asp.net Web GUI的单元测试,asp.net,asp.net-mvc,tdd,Asp.net,Asp.net Mvc,Tdd,我最近听到了一个讨论,其中TDD是热门词汇。现在根据一位发言者的说法,为了测试您的行为,您需要使用MVC,但另一方面,据说TDD是一种可以在任何环境中采用的方法(如围绕ASP.NET MVC或Web表单的讨论)。另一位发言者声称,如果您将您的行为放在库或模型中,那么您就可以在TDD中测试您的存储库或服务,因此不需要担心测试HTML。在进行Web GUI测试时,TDD应该覆盖多少,或者值得付出努力 我知道有时我们会使用“下一个最好的东西”并将其发挥到极致,但这并不会真正有益于真实的开发场景。那么T

我最近听到了一个讨论,其中TDD是热门词汇。现在根据一位发言者的说法,为了测试您的行为,您需要使用MVC,但另一方面,据说TDD是一种可以在任何环境中采用的方法(如围绕ASP.NET MVC或Web表单的讨论)。另一位发言者声称,如果您将您的行为放在库或模型中,那么您就可以在TDD中测试您的存储库或服务,因此不需要担心测试HTML。在进行Web GUI测试时,TDD应该覆盖多少,或者值得付出努力

我知道有时我们会使用“下一个最好的东西”并将其发挥到极致,但这并不会真正有益于真实的开发场景。那么TDD可以应用于UI吗

编辑


我同意你们的观点,这也是我的感受:如果你真的做了TDD,那么你就不需要测试你的WEB UI前端,因为你提供给它的数据应该在你的业务/服务/存储库层下,这些层可以在没有UI的情况下进行测试。因此,如果您以这样一种方式编程Web表单应用程序,即您的操作/行为与服务器端调用(如按钮单击事件,尽管在我的情况下,它们可以通过调用较低级别的操作进行测试)相关联,那么您可以在Web表单中使用TDD。感谢您的回答

我将大胆地说,如果您需要对GUI进行单元测试以完成业务逻辑或集成测试,那么您的设计就缺乏清晰的关注点分离。MVC和MVP都是提供清晰的关注点分离的模式,因此您的UI可以只关注表示逻辑

在ASP.Net中,您可以使用ASP.NETMVC或(使用web表单的MVP实现)使用这两个选项


也就是说,您仍然应该进行GUI测试,但不需要手动完成所有这些工作。提供通过UI进行自动化测试的方法。

我可以大胆地说,如果为了完成业务逻辑或集成测试而需要对GUI进行单元测试,那么您的设计就缺乏清晰的关注点分离。MVC和MVP都是提供清晰的关注点分离的模式,因此您的UI可以只关注表示逻辑

在ASP.Net中,您可以使用ASP.NETMVC或(使用web表单的MVP实现)使用这两个选项


也就是说,您仍然应该进行GUI测试,但不需要手动完成所有这些工作。提供通过UI进行自动化测试的方法。

我同意Josh的观点。不过,我只是想继续下去,所以我不能投赞成票

首先应该注意,测试GUI不是单元测试。正如Josh所提倡的那样,通过清晰的关注点分离,GUI不包含任何业务逻辑

需要测试的逻辑封装在一个或多个离散库中(或者可能封装在简单的MVC控制器中)

TDD只涉及逻辑代码单元,可靠的TDD实践的一个标志是,您的所有逻辑代码都可以在没有任何UI的情况下编写和测试。事实上,测试通常是在测试类之前编写的。代码完成且所有测试通过后,可以添加UI以利用您构建的API挂钩,该UI可以是webforms、MVC、WPF、winforms等


使用Selenium这样的产品在UI上进行的测试更多的是验收测试或可能的集成测试。

我同意Josh的观点。不过,我只是想继续下去,所以我不能投赞成票

首先应该注意,测试GUI不是单元测试。正如Josh所提倡的那样,通过清晰的关注点分离,GUI不包含任何业务逻辑

需要测试的逻辑封装在一个或多个离散库中(或者可能封装在简单的MVC控制器中)

TDD只涉及逻辑代码单元,可靠的TDD实践的一个标志是,您的所有逻辑代码都可以在没有任何UI的情况下编写和测试。事实上,测试通常是在测试类之前编写的。代码完成且所有测试通过后,可以添加UI以利用您构建的API挂钩,该UI可以是webforms、MVC、WPF、winforms等

使用Selenium这样的产品在UI上进行的测试更多的是验收测试或可能的集成测试。

非常类似于非常类似于非常类似于非常类似于非常类似于非常类似于Jay:)感谢整体响应的清晰性。非常非常非常Jay:)感谢整体响应的清晰性。