查询Junit测试

时间:2013-10-30 10:33:06

标签: junit

我是junit的新手。我正在阅读http://docs.spring.io/spring/articles/2007/Spring-MVC-step-by-step/part1.html关于spring mvc的教程,我发现了一个测试类如下:
1.)

  

包springapp.web;

     

import org.springframework.web.servlet.ModelAndView;

     

import springapp.web.HelloController;

     

import junit.framework.TestCase;

     

公共类HelloControllerTests扩展了TestCase {

public void testHandleRequestView() throws Exception{       
    HelloController controller = new HelloController();
    ModelAndView modelAndView = controller.handleRequest(null, null);       
    assertEquals("hello.jsp", modelAndView.getViewName());
} }

我无法理解为什么我需要使用Junit的TestCase作为额外的负担,因为我可以通过创建一个简单的测试类来检查它。

 public class TestStub {
     public static void main(String[] args) {
         HelloController controller = new HelloController();
         ModelAndView modelAndView = controller.handleRequest(null, null);
         if(modelAndView.getViewName().equals("hello.jsp")) {
             ...
         } 
     }
 }  

再次提到我是初学者。

1 个答案:

答案 0 :(得分:1)

您当然可以使用main方法创建这样的类,并应用您自己的检查并确定测试是否成功。

然后你会添加更多的课程,更多的测试和事情会变得有点混乱。也许你想要运行所有测试并看到它们的整体状态,而不是在第一个失败时停下来。也许您希望能够仅重新运行失败的测试。也许你想在一个类中的所有测试方法之前运行一些配置部分,列表可以继续。

此时,您将开始尝试提取常见的可重用内容,并根据您的需求创建某种框架,JUnit,TestNg等已经存在。我想这听起来有点像重新发明轮子。

这些框架已经存在了一段时间,因此它们已经过全面测试,并且可以很好地与IDE和持续集成工具集成。许多开发广泛使用的框架的社区,例如Spring,已经投入大量工作来提供一种方法来促进与测试框架(自定义上下文感知的运行器,模拟构建器等)的集成,基本上使您的生活更轻松。

测试类也是“代码”,它们也必须干净且维护良好。使用已知的测试框架可以让团队成员更容易理解您尝试表达的内容,因为它“强制”执行标准化的方式。这仍然需要每个人都了解它,但是当你转换工作场所时,你有更高的机会重复使用这些知识,而不是你自己使用它。

我确信有更多理由,但在我阅读你的问题时会想到这些。 Stefan也提出了一个很好的观点,自2007年以来发生了很多变化,这种演变使得Spring和JUnit4都变得更加简单。