JUnit是一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,由于程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就能够用Junit进行自动测试了。java
Junit的环境配置
环境:Myeclipse 中配置junit,选择项目Junit4(在Package Explorer中) -> 右击鼠标 -> 选择properties -> 选择Java Build Path (在左边的菜单中) -> 在右边选择标签 Libraries -> 单击按钮“Add Library” -> 选择JUnit , 单击按钮 “Next>” -> 选择JUnit library version 为: JUnit4 -> 单击按钮“Finish” –> 单击按钮 “OK”程序员
MyEclipse中建立Junit 的步骤以下:框架
一、选择一个存放测试类的package,右键-->new-->Other-->Java-->JUnit-->JUnit Test Case-->填写完测试类的名字,选择所要使用的JUnit 的版本【注:JUnit 4支持@解释表示符,建议使用】,可根据状况,选择是否自动生成:setUpBeforeClass()【注:静态方法,在测试类执的测试方法执行前被系统调用,只被调用一次】,tearDownAfterClass()【注:静态方法,在测试类的全部测试方法执行完毕后被系统调用,只被调用一次】,setUp()【注:非静态方法,在每一个测试方法执行前,被系统调用,有多少个测试方法,就被调用多少次】,tearDown()【注:非静态方法,在每一个测试方法执行完毕后,被系统调用,有多少个测试方法,就被调用多少次】这些方法。 而后,点“finish” ,这样就建立了一个 Junit Case。eclipse
执行成功后,右侧显示绿色。error指的是程序自己错误,failures指测试失败函数
在写测试代码时须要注意:测试
1.测试类是一个独立的类,没有任何父类,它与普通类的区别在于内部方法的声明ui
2.建立一个待测试的对象。测试哪一个类,要建立该类对象.net
3.测试方法的声明,以@做为开头,是junit4自定义的,要掌握标注的含义、设计
如:若是你在写程序前作了很好的规划,那么哪些方法是什么功能都应该实现定下来。所以,即便该方法还没有完成,他的具体功能也是肯定的,这也就意味着你能够为他编写测试用例。可是,若是你已经把该方法的测试用例写完,但该方法还没有完成,那么测试的时候必定是“失败”。这种失败和真正的失败是有区别的,所以JUnit提供了一种方法来区别他们,那就是在这种测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法还没有完成,暂不参与这次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只须要把@Ignore标注删去,就能够进行正常的测试。htm
Fixture
Fixture的含义就是“在某些阶段必然被调用的代码”。好比咱们上面的测试,因为只声明了一个Calculator对象,他的初始值是0,可是测试完加法操做后,他的值就不是0了;接下来测试减法操做,就必然要考虑上次加法操做的结果。这绝对是一个很糟糕的设计!咱们很是但愿每个测试都是独立的,相互之间没有任何耦合度。所以,咱们就颇有必要在执行每个测试以前,对Calculator对象进行一个“复原”操做,以消除其余测试形成的影响。所以,“在任何一个测试执行以前必须执行的代码”就是一个Fixture,咱们用@Before来标注它。
从上面的例子能够看到在JUnit 4中还引入了一些其余的元数据,下面一一介绍:
@Before:
使用了该元数据的方法在每一个测试方法执行以前都要执行一次。
@After:
使用了该元数据的方法在每一个测试方法执行以后要执行一次。
注意:@Before和@After标示的方法只能各有一个。这个至关于取代了JUnit之前版本中的setUp和tearDown方法,固然你还能够继续叫这个名字,不过JUnit不会霸道的要求你这么作了。
@Test(expected=*.class)
在JUnit4.0以前,对错误的测试,咱们只能经过fail来产生一个错误,并在try块里面assertTrue(true)来测试。如今,经过@Test元数据中的expected属性。expected属性的值是一个异常的类型
@Test(timeout=xxx):
该元数据传入了一个时间(毫秒)给测试方法,
若是测试方法在制定的时间以内没有运行完,则测试也失败。
@BefreClass 全部测试开始以前运行。
@AfterClass 全部测试结果以后运行。
@BeforeClass 和 @AfterClass两个Fixture来帮咱们实现这个功能。从名字上就能够看出,用这两个Fixture标注的函数,只在测试用例初始化时执行@BeforeClass方法,当全部测试执行完毕以后,执行@AfterClass进行收尾工做。在这里要注意一下,每一个测试类只能有一个方法被标注为@BeforeClass 或 @AfterClass,而且该方法必须是Public和Static的。
http://blog.csdn.net/hongyanjava/article/details/15814155
4.在测试类中,编写的测试方法使用@test标注,代表这是一个测试方法。方法名字没有限制,返回值是void,并且不能有任何参数。若是违反这些规则,运行时会抛出异常。