2009-05-29 72 views
1

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

我知道有时我们会使用“下一个最好的东西”,并将其带到极致,但它并不真正有益真实开发情景。那么TDD可以应用到用户界面吗?

编辑

我同意你的家伙,这也是我的感受:如果你真的那么TDD你不需要测试你的WEB UI前端,因为你是数据提供给它应该在您的业务/服务/存储库层下,可以在没有UI的情况下进行测试。因此,如果你编程你的Web窗体应用程序时,你的操作/行为与服务器端调用绑定在一起(比如按钮点击事件,尽管在我的情况下它们可以通过调用较低级别的操作来测试),你可以在Web窗体中使用TDD 。感谢您的回答

+0

非常类似于http://stackoverflow.com/questions/362671/does-tdd-apply-well-when-developing-an-ui – JeffH 2009-05-29 15:31:17

回答

4

我会大胆地说,如果您需要单元测试您的GUI以获得业务逻辑或完成集成测试,那么您的设计缺乏清晰的关注点分离。 MVC和MVP都是模式,提供了一个清晰的关注点分离,因此您的用户界面可以专注于表示逻辑。

您在ASP.Net中使用ASP.Net MVC或WCSF(使用Web表单的MVP实现)都有选项。

这就是说,你仍然应该做GUI测试,但是你不需要手动完成所有这些。 Selenium Server, and Selenium Remote Control提供了通过UI进行自动测试的方法。

1

我同意乔希在这里。尽管如此,所以我不能投票。

首先应该注意的是,测试您的GUI不是单元测试。像Josh所倡导的那样,干净的关注点分离,GUI不包含业务逻辑。

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

TDD只涉及逻辑代码单元,固态TDD实践的一个标志是所有的逻辑代码都可以在没有任何UI的情况下编写和测试。事实上,测试通常是在他们将要测试的课程之前编写的。一旦代码完成并且所有测试都通过,就可以添加UI以利用您构建的API钩子,并且该UI可以是webforms,MVC,WPF,winforms等。

在UI上测试您“如Selenium的产品会做更多的验收测试或可能的集成测试。

+0

非常非常杰伊:)感谢您为整体回应增加清晰度。 – Josh 2009-05-31 14:52:39