有几点需要关注:
				
				
						
								1
						
						——
						
						
						一个测试案例必须要继承自
						
								TestCase
						
						;
				
				
						
								2
						
						——
						
								 JUnit
						
						是通过反射机制来执行每一个
						
								test
						
						方法,它通过匹配方法名
						
								testXXX
						
						来确定一个方法为需要执行的测试
						
								Case
						
						。
				
				
						
								3
						
						——
						
						
						使用一个或几个
						
								assertXXX
						
						方法来验证我们的情况。
				
				
						
								
										 
								
						
				
				
						好,现在使用
						
								JUnit 4.x
						
						来实现相同的测试,从中,我们就能看到一些新的东西:
				
				
						 
				
				
						首先关注以下几点:
				
				
						
								1
						
						——我们的测试类并没有
						
								extends TestCase
						
						类了,
				
				
						
								2
						
						——我们的测试方法并没有以
						
								test
						
						开头,而是使用了
						
								@Test
						
						标签来标记该方法是一个需要测试的方法。
				
				
						
								
										 
								
						
				
				
						下面的图标示了用
						
								JUnit 4.x
						
						我们需要做的事情:
				
				
						 
				
				
						
								1
						
						——我们需要引进
						
								org.junit.Test
						
						标签,还有很多标签都在
						
								org.junit.*
						
						包里面。
				
				
						
								2
						
						——引进
						
								static assertEquals
						
						静态方法,引入静态方法也是
						
								Java 5
						
						的一个新的特性,避免了使用过长的应用方法名。
				
				
						
								3
						
						——引进
						
								JUnit4TestAdapter
						
						,这是一个和老版本
						
								JUnit
						
						工具合用的适配器。
				
				
						
								4
						
						——使用
						
								@Test
						
						标签来申明一个方法需要测试。
				
				
						
								5
						
						——直接使用需要的
						
								assert
						
						方法
				
				
						
								6
						
						——使用一个
						
								main
						
						方法来用
						
								JUnit4TestAdapter
						
						在老的
						
								Junit runner
						
						上运行新的测试。
				
				
						
								
										 
								
						
				
				
						总结一下:
				
				
						
								l         
						
						使用一个普通的类,而不必继承自
						
								Junit.framework.TestCase
						
						。
				
				
						
								l         
						
						使用
						
								@Test
						
						标签来标记一个方法是一个测试方法。
				
				
						
								l         
						
						使用一个
						
								assert
						
						方法。在新版本的
						
								Junit
						
						中,
						
								assert
						
						方法和老方法没有什么区别。并且使用静态方法引入,(
						
								static import
						
						)特性来简化方法的使用。
				
				
						
								l         
						
						使用
						
								JUnit4TestAdapter
						
						来运行测试。
				
				
						
								
										 
								
						
				
				
						
								Set up 
						
						和
						
								tear down
						
				
				
						新版本的
						
								JUnit
						
						提供了两个新的标签来使用
						
								set up
						
						和
						
								tear down
						
						:
				
				
						
								@Before
						
						:使用了该标记的方法在每个测试方法执行之前都要执行一次。
				
				
						
								@After
						
						:使用了该标记的方法在每个测试方法执行之后要执行一次。
				
				
						
								
										 
								
						
				
				
						这里有个测试的例子:
				
				
						 
				
				
						如果我们在所有的方法中都添加一个
						
								System.out.println()
						
						方法,执行的结果会像这样:
				
				
						
								
										       runOnceBeforeAllTests() 
						
						被调用;
				
				
						
								bookNotAvailableInLibrary() 
						
						被调用;
				
				
						
								bookAvailableInCentralLibrary
						
						()被调用;
				
				
						
								runAfterAllTests
						
						()被调用,
				
				
						而如果我们还有一个
						
								@Before beforeTest()
						
						方法和一个
						
								@After afterTest()
						
						方法,那么执行的结果会是这样:
				
				
						
								
										       runOnceBeforeAllTests() 
						
						被调用;
				
				
						
								
										       beforeTest() 
						
						被调用;
				
				
						
								bookNotAvailableInLibrary() 
						
						被调用;
				
				
						
								afterTest
						
						()被调用;
				
				
						
								beforeTest() 
						
						被调用;
				
				
						
								bookAvailableInCentralLibrary
						
						()被调用;
				
				
						
								afterTest
						
						()被调用;
				
				
						
								runAfterAllTests
						
						()被调用,
				
				
						从这里我们就可以看出两者的区别了。
				
				
						另外一点,
						
								@Before
						
						和
						
								@After
						
						标示的方法只能各有一个。
				
				
						
								
										 
								
						
				
				
						错误处理:
				
				
						在
						
								JUnit4.0
						
						之前,对错误的测试,我们只能通过
						
								fail
						
						来产生一个错误,并在
						
								try
						
						块里面
						
								assertTrue
						
						(
						
								true
						
						)来测试。现在,通过
						
								@Test
						
						标签中的
						
								expected
						
						属性,就可以更优雅的测试错误了:
				
				
						 
				
				
						在这段代码中,我们为
						
								@Test
						
						标签添加了
						
								expected
						
						属性,并提供了一个
						
								BookNotAvailableException
						
						,那么在这段测试中,如果代码没有抛出这个类型的错误,测试就失败了,如果正确抛出该类型错误,测试通过。
				
				
						
								
										 
								
						
				
				
						其他的标签:
				
				
						
								@ignore
						
						标签:
				
				
						该标签标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个
						
								String
						
						的参数,来表明为什么会忽略这个测试方法。比如:
						
								@lgnore(“
						
						该方法还没有实现
						
								”)
						
						,在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。
				
				
						
								
										 
								
						
				
				
						
								@Test(timeout=xxx):
						
				
				
						该标签传入了一个时间(毫秒)给测试方法,
				
				
						如果测试方法在制定的时间之内没有运行完,则测试也失败。
				
				
						
								
										 
								
						
				
				
						这篇文章就到这里,其实
						
								JUnit4.x
						
						里面还有很多标签的用法,将在明天的
						
								blog
						
						中继续。
 (注:本文作者,EasyJF开源团队 stef_wu,转载请保留作者声明!)
				
		
	posted on 2006-11-19 19:27 
简易java框架 阅读(2527) 
评论(1)  编辑  收藏