0

我对junit很陌生。我正在阅读http://docs.spring.io/spring/articles/2007/Spring-MVC-step-by-step/part1.html for spring mvc的教程,我找到了一个测试类如下:
1.)

包springapp.web;

导入 org.springframework.web.servlet.ModelAndView;

导入 springapp.web.HelloController;

导入 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")) {
             ...
         } 
     }
 }  

再次提到我是初学者。

4

1 回答 1

1

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

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

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

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

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

我敢肯定还有更多原因,但是当我阅读您的问题时,我想到了这些原因。Stefan 也提出了一个很好的观点,自 2007 年以来发生了很多变化,这种演变使得 Spring 和 JUnit4 的事情变得更简单。

于 2013-10-30T12:18:49.073 回答