junit断言 是什么意思

2023-03-16 20:07 27次浏览 攻略

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。

相关推荐