Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。 单元测试主要是来测试程序的结果和自己期望的值是否相等。
二、JUnit测试框架目前大体分为两个版本(JUnit
3.8 和 JUnit 4.x)
JUnit测试框架目前大体分为两种(JUnit 3.8 和 JUnit 4.x)
———————————— JUnit 3.8 ———————————————
涉及到的包一般是 import junit.framework.*
1.在 JUnit 3.8 中,如果要测试Person类,那么测试类的命名规则就是在这个类名后面加上
Test,如Per,测试类要继承TestCast类,而TestCast类又继承于Assert类,测试方法需满足如下原则:
1)修饰符设为 public
2)返回类型 void
3)没有方法参数
4)方法名称必须以test开头(它通过反射找出所有方法,然后找出以test开头的方法)。
2.不能依赖于测试方法的执行顺序
删除一些方法后不会对其他的方法产生任何的影响,我们不能依赖于测试方法的执行顺序。
Test Case之间一定要保持完全的独立性,不允许出现任何的依赖关系。
3.setUp方法和testDown方法都是TestCase类的方法
1)setUp方法是在执行每个测试方法之前执行的
2)testDown方法是在执行每个测试方法之后执行的
———————————— JUnit 4 ———————————————
涉及到的包是 import org.junit.*
1、在junit 4 当中测试类无需继承于 TestCase类,命名不再有JUnit3中的要求,测试方法的名字也无需以test开头,主要以注解的方式来定义,只要在测试方法加上@Test就可以进行测试,但有些原则还是要以junit3
的风格来设计,比如测试方法以test开头,习惯问题吧。
2、JUnit4注解的应用
@Test :定义一个测试方法的标志
@Test(timeout=1000) :设置超时时间,如果测试时间超过了你定义的timeout,测试失败
@Test(expected) : 申明出会发生的异常,比如 @Test(expected = Exce)
@Ignore :让 测试方法 或 测试类 不被执行,让其失去测试的功能
@Before : 跟junit 3.8 上的setUp() 方法同样的效果,方法名最好和setUp()一样,但不强求,在每一个测试方法之前被执行
@After : 跟junit 3.8 上的tearDown() 方法同样的效果,方法名最好和tearDown()一样,但不强求,在每一个测试方法之后被执行
@BeforeClass : 被该注解申明的方法,功能是:在所有的测试方法之前执行,只执行一次
@AfterClass : 被该注解申明的方法,功能是:在所有的测试方法之后执行,只执行一次
三、JUnit4测试方法
以前我们写好了一个类,类里有写好的方法,我想去测试,怎么测试?写个main方法,然后new这个类,然后去调用这个类里面的方法去测试,但是如果我们写了100个类,要写100个main方法去测试,完了之后,还要一个一个的删除,比较麻烦,JUnit就很好的解决了这样的问题。
1、举个例子新建一个项目,创建一个Calcuate类,里面写两个测试方法
以前我们要测试Calcuate中的方法的话,直接在Calcuate类中写个mian方法然后去测试Calcuate中的方法
2、现在我们用JUnit的话,有一个很大的好处就是测试代码和项目代码完全分离。在Maven工程中,目录结构十分清楚,可以在test资源目录下进行单元测试。
3.通过右击类,选择new,再选择Junit Test Case。来新建一个类的单元测试,同时也可以选择里面需要测试的方法。
5、运行测试方法有几种
1.右键项目中测试方法直接Run As
2.双击方法名,右键Run As
出现绿条则说明测试成功,出现红条则说明出现失败
四、JUnit注解
1、@Test:定义一个测试方法的标志
创建完后,测试Person类中的方法,在JUnit3中测试类需要继承TestCase才能测试其中的方法,而在JUnit4中用的是注解,不需要继承TestCase。
2、@Test(timeout=1000) :设置超时时间,如果测试时间超过了你定义的timeout,测试失败
比如说我想测试一个算法,看看能不能在某个时间内完成
例如,在方法上@Test(timeout=10)就是看此方法能不能再10毫秒内运行完毕
如果不能再10毫秒内运行完毕则报错 test timed out after 10 millisenconds
3、@Test(expected):申明出会发生的异常比如
@Test(expected =Exce)
如:假设有些异常你在这不想处理,可以忽略掉
如int a = 10/0会抛如下异常 在@Test中加入expected=ArithmeticExce上面抛出的异常,表示这个异常在这里不处理,可以忽略,运行后不报错
4、@Ignore :让测试方法或测试类不被执行,让其失去测试的功能
如:假设有很多方法时,有些方法你不行测试而其他方法你都要测试,则可通过注解来达到目的。
在不用测试的方法上加上@Ignore表示此方法不参与测试如在testEat()方法上加上@Ignore注解,则在执行这个测试类的时候不会执行此方法
五、总结
使用规范:
1.测试方法上必须使用@Test进行修饰;
2.测试方法必须使用public void进行修饰,不能带任何参数;
3.新建一个源代码目录来存放我们的测试代码;
4.测试类的包应该和被测试的包保持一致;
5.测试类中的方法都应该可以进行独立测试,测试方法间不能有任何依赖;
6.测试类使用Test作为类名的后缀;
7.测试方法使用testc作为方法前缀。
测试结果:
1.测试用例不是用来证明你是对的,而是证明你没有错。
2.测试用例用来达到想要的预期结果,但对于逻辑错误无能为力。
3.Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
4.Error是由代码异常引起的,他可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。
1.文章《junit断言 是什么意思》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《junit断言 是什么意思》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好