2010-06-13 38 views
10

我想问问您为JSP创建单元测试时存在哪些技术。单元测试JSP

我已经知道HtmlUnit/HttpUnit/JWebUnit/Selenium的可能性。

谢谢!

回答

10

我会说使用其Web界面测试一个Web应用程序(无论是JSP还是其他),上面提到的框架之一不是严格意义上的单元测试。单元测试意味着单独测试应用程序的小部分(一种方法,一种类)。使用Web框架,您可以测试整个Web应用程序,因此这更像是系统或集成测试。这并不是说它没有用 - 相反,只是最好澄清一下术语。尽管如此,如果我要测试一个JSP,我很可能会满意使用上面提到的一些工具对与JSP相关的所有特定场景进行系统测试。但是,如果你真的想要“经典的”单元测试,我想最接近你可以得到的是编译你的JSP到一个servlet类,然后直接调用servlet方法(例如从JUnit,使用模拟框架,如EasyMock准备Http请求,响应等对象)。

更新: IMO需要为JSP单元测试的唯一原因是如果您有业务逻辑。这反过来又违背了用户界面和业务层的分离。因此,重新设计应用程序并将逻辑移入单独的POJO(如果您有选择的话)比尝试编写人为的单元测试以测试不属于的业务逻辑更好。

+0

是的我知道HtmlUnit和其他人是集成测试,而不是单元测试。我提到他们的原因是我知道人们会提及他们作为选择,我想节省时间。 但无论如何,感谢您的回答:) – 2010-06-14 05:45:39

+0

@Avi,同时我对此有了更多的想法,请参阅我的更新。 – 2010-06-14 08:01:49

+1

+1:这是一个明智的答案。把你的业务逻辑放在*是可测试的东西中,并保持你的JSP简单,以至于它显示在“明显没有错误”的标题下(而不是“没有明显的错误”)。 – 2010-06-14 08:05:21