完成了我的第一个Spring MVC应用程序 - 老板想看我的单元测试 - 我该从哪里开始?

3
我刚刚快速搭建了一个Spring MVC应用程序作为我的部门内部应用程序的替代演示。
现在我要演示与Spring MVC相关的测试驱动开发如何工作。
不幸的是,我没有使用TDD来构建演示,也不确定从哪里开始。
我正在使用Maven进行构建 - 是否有任何基于Maven的测试框架在Spring MVC中很容易入门且有良好的教程?
我该从哪里开始?
4个回答

5

这个教程详细介绍了如何逐步开发一个Spring Framework MVC应用程序,其中包括编写测试的步骤。将其中的示例用作模板。


4
由于TDD对代码和方法的编写有很大的影响,在大多数复杂情况下都不可能假装它!我的意思是,如果你使用TDD,那么代码将以一种易于测试的方式编写。如果你不使用TDD,那么代码也可以进行测试,但是方式完全不同。因此,如果你有一些TDD的经验,你就会看到代码的差异。
所以,如果代码不是很多,并且这个TDD的要求非常严格,那么就把代码扔掉,重新写吧。
无论如何,无论你是否重新编写代码,你需要的工具都是相同的:
你需要一个测试框架:选择JUnit 4,因为它得到了Spring最好的支持(请参阅Spring Referece:第9章 测试)。
Maven集成非常容易:
将测试用例放在`src/test/java'下,然后(但这取决于你的风格)在与测试类相同的并行包结构中。你所需要的只是maven-sure-fire插件。
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
  </plugin>

如果您想进行一些模拟,请看看 easyMockJmockMockito

如果您需要进行访问应用程序前端的集成测试,请查看:Selenium2/Webdriver - 因此,您需要首先启动服务器,例如Maven-Cargo会帮助您。但是警告:要使您的第一个基于Web的集成测试运行起来,自动启动服务器并自动部署应用程序是一个艰巨的任务,可能需要一天以上的时间。


这是一个快速测试应用程序,因此修改它以“感觉像TDD”不应该很困难。 - Guillaume
1
Guillaume:在这种情况下,用TDD再做一遍甚至也很容易;-) 如果有人被要求展示某个东西的工作原理,他应该用这种方式完成! - Ralph
我非常同意,他只是在寻求替代方案,我想 :) 就我个人而言,我会从头开始重新设计,同时保留“旧”应用程序,并在需要时参考它。 - Guillaume

1

只需使用普通的JUnit。 Maven会在构建过程中自动运行它们。

基本上,您应该为代码中的每个方法编写单元测试。测试代码的每个可能路径和可能的值范围。

如果您想模拟TDD,您可以注释掉代码并添加一个失败的测试,然后取消注释一个或多个使测试通过的代码行。


1

你需要一个测试框架(如JUnit)和一个用于模拟Spring控制器的框架。EasyMock是一个不错的选择。你可以在这里这里找到一些教程。


谢谢,但看起来EasyMock已经一年半没更新了。这难道不会成为一个风险选择吗? - zippy
也许,EasyMock只是很稳定?EasyMock是一个广泛使用的框架,一旦你熟悉了JUnit或者TestNG,你肯定应该深入学习它。顺便说一下,TDD试图在编写代码之前编写测试... - Angel O'Sphere
我测试了所有的Java Mocking框架,我最喜欢的是JMock 2(远远超过其他)。看一下这个网址(http://www.jmock.org/)- 但是如果你是初学者,请注意从普通的JUnit到Mocking有相当大的学习曲线。 - Guillaume

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接