我是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")) {
...
}
}
}
再次提到我是初学者。
答案 0 :(得分:1)
您当然可以使用main方法创建这样的类,并应用您自己的检查并确定测试是否成功。
然后你会添加更多的课程,更多的测试和事情会变得有点混乱。也许你想要运行所有测试并看到它们的整体状态,而不是在第一个失败时停下来。也许您希望能够仅重新运行失败的测试。也许你想在一个类中的所有测试方法之前运行一些配置部分,列表可以继续。
此时,您将开始尝试提取常见的可重用内容,并根据您的需求创建某种框架,JUnit,TestNg等已经存在。我想这听起来有点像重新发明轮子。
这些框架已经存在了一段时间,因此它们已经过全面测试,并且可以很好地与IDE和持续集成工具集成。许多开发广泛使用的框架的社区,例如Spring,已经投入大量工作来提供一种方法来促进与测试框架(自定义上下文感知的运行器,模拟构建器等)的集成,基本上使您的生活更轻松。
测试类也是“代码”,它们也必须干净且维护良好。使用已知的测试框架可以让团队成员更容易理解您尝试表达的内容,因为它“强制”执行标准化的方式。这仍然需要每个人都了解它,但是当你转换工作场所时,你有更高的机会重复使用这些知识,而不是你自己使用它。
我确信有更多理由,但在我阅读你的问题时会想到这些。 Stefan也提出了一个很好的观点,自2007年以来发生了很多变化,这种演变使得Spring和JUnit4都变得更加简单。