junit

   JUnit是一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

Junit的环境配置
环境:Myeclipse 中配置junit,选择项目Junit4(在Package Explorer中) -> 右击鼠标 -> 选择properties -> 选择Java Build Path (在左边的菜单中) -> 在右边选择标签 Libraries  -> 单击按钮“Add Library”  -> 选择JUnit , 单击按钮 “Next>”  -> 选择JUnit library version 为: JUnit4 -> 单击按钮“Finish” –> 单击按钮 “OK”

MyEclipse中创建Junit 的步骤如下:

1、选择一个存放测试类的package,右键-->new-->Other-->Java-->JUnit-->JUnit Test Case-->填写完测试类的名字,选择所要使用的JUnit 的版本【注:JUnit 4支持@解释表示符,建议使用】,可根据情况,选择是否自动生成:setUpBeforeClass()【注:静态方法,在测试类执的测试方法执行前被系统调用,只被调用一次】,tearDownAfterClass()【注:静态方法,在测试类的所有测试方法执行完毕后被系统调用,只被调用一次】,setUp()【注:非静态方法,在每个测试方法执行前,被系统调用,有多少个测试方法,就被调用多少次】,tearDown()【注:非静态方法,在每个测试方法执行完毕后,被系统调用,有多少个测试方法,就被调用多少次】这些方法。 然后,点“finish” ,这样就创建了一个 Junit Case。

执行成功后,右侧显示绿色。error指的是程序本身错误,failures指测试失败

在写测试代码时需要注意:

1.测试类是一个独立的类,没有任何父类,它与普通类的区别在于内部方法的声明

2.创建一个待测试的对象。测试哪个类,要创建该类对象

3.测试方法的声明,以@作为开头,是junit4自定义的,要掌握标注的含义、

如:如果你在写程序前做了很好的规划,那么哪些方法是什么功能都应该实现定下来。因此,即使该方法尚未完成,他的具体功能也是确定的,这也就意味着你可以为他编写测试用例。但是,如果你已经把该方法的测试用例写完,但该方法尚未完成,那么测试的时候一定是“失败”。这种失败和真正的失败是有区别的,因此JUnit提供了一种方法来区别他们,那就是在这种测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

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,而且不能有任何参数。如果违反这些规则,运行时会抛出异常。 

posted on 2015-05-07 17:47  叶子的分享  阅读(232)  评论(0编辑  收藏  举报