开始学习JUnit In Action 
		
				所有单元测试框架都应该遵守的3条规则: 
				    1.每个单元测试都必须独立于其它单元测试而运行. 
				    2.必须以单项测试为单位来检测和报告错误 
				    3.必须易于定义要运行哪些单元测试. 
				JUnit提供Swing图形界面 
				     windows:  java -cp junit.jar;. junit.swingui.TestRunner junit.samples.AllTests 
				     Unix: java -cp junit.jar:. junit.swingui.TestRunner junit.samples.AllTests 
				
						TestCase(测试用例)——扩展了JUnit的TestCase类的类。它以testXXX方法的形式包含一个或多个测试。一个test case把具有公共行为的测试归入一组。在本书的后续部分,当我们提到测试的时候,我们指的是一个testXXX方法;当我们提及test case的时候,我们指的是一个继承自TestCase的类,也就是一组测试.
				
						TestSuite(测试集合)——一组测试。一个test suite是把多个相关测试归入一组的便捷方式。例如,如果你没有为TestCase定义一个test suite,那么JUnit就会自动提供一个test suite,包含TestCase中所有的测试
				
						TestRunner(测试运行器)——执行test suite的程序。JUnit提供了几个test runner,你可以用它们来执行你的测试。没有TestRunner接口,只有一个所有test runner都继承的BaseTestRunner。因此,当我们编写TestRunner的时候,我们实际上指的是任何继承BaseTestRunner的test runner类
				
						TestListener(测试侦听器) --- 多个对象同时报告一个测试的信息.
				
				TestCase通过setUp和tearDown方法来自动创建和销毁fixture。TestCase会在运行每个测试之前调用setUp,并且在每个测试完成之后调用tearDown。 
				概括地说,controller做这些事情: 
				·       接受请求。 
				·       对请求执行常用计算。 
				·       选择合适的请求处理器。 
				·       路由请求,以使处理器可以执行相关的业务逻辑。 
				·       可能会提供一个顶层的处理器用于处理错误和异常。 
				Controller是一个很好用的类,在很多应用中都可以看到它的身影。例如,在一个表现层模式中,一个web controller接受HTTP请求,并把HTTP参数、cookie、HTTP头取出,可能使得HTTP元素易于被应用的其他部分访问。Web controller会基于请求中的元素判断出需调用的合适的业务逻辑组件(可能是在HTTP session、数据库或者其他资源中的持久数据的帮助下做到这点)。Apache Struts框架就是web controller的一个例子。