经过一个月的接口测试实践,加上同事整理的PPT,这里罗列一下,一些有关Junit的知识点。
Junit是什么?
JUnit是开放源代码项目,可按需要进行扩展。
这个框架提供了许多 断言(assert)方法,允许你设置测试的规则,如:assertEquals()、assertNull()、assertNotSame()、assertTrue()等方法,一个测试用例包括了多个断言,当运行测试用例后,JUnit运行器会报告哪些断言没有通过,开发人员就可顺藤摸瓜搞个水落石出了。
这个框架提供了许多 断言(assert)方法,允许你设置测试的规则,如:assertEquals()、assertNull()、assertNotSame()、assertTrue()等方法,一个测试用例包括了多个断言,当运行测试用例后,JUnit运行器会报告哪些断言没有通过,开发人员就可顺藤摸瓜搞个水落石出了。
而传统的测试方法需要将期望的结果用诸如
System.out.println()等语句将过程信息打印到控制台或日志中,由开发人员观察输出信息以判断是否正确,现在这种“观察”的工作由JUnit的那些assertXxx()方法自动完成。
junit3.x与junit4.x的区别?
1、JUnit3.x中测试必须继承TestCase,并且每个方法名必须以test开头。比如:testMethod1(),在JUnit4.x中不必继承TestCase,采用了注解的方式。只要在测试的方法上加上注解@Test即可,从而不必再遵循以前的一些显式约定和反射定位测试;在JUnit4.x中如果继承了TestCase,注解就不起作用了。
2、JUnit4引入了一个JUnit3中没有的新特性。任何用@BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用@AfterClass注释的方法都将在该类中的所有测试都运行之后刚好运行一次
——可以理解为类范围的 setUp() 和tearDown() 方法。
junit4.x捕获异常的方式?
1、try …catch
testM()
{
try{
M(a, b);
} catch (Exception e){
//成功的捕捉了这个异常
}
}
{
try{
M(a, b);
} catch (Exception e){
//成功的捕捉了这个异常
}
}
2. @Test(expected=Exception.class)
使用@Test标注的expected属性,
JUnit框架就能自动帮我们检测是否抛出了我们指定的异常。
如下所示:
使用@Test标注的expected属性,
JUnit框架就能自动帮我们检测是否抛出了我们指定的异常。
如下所示:
@Test(expected = ArithmeticException.
class)
public void divideByZero() {
calculator.divide(0);
}
public void divideByZero() {
calculator.divide(0);
}
JUnit 基础断言
assertEquals(a,b) | a是否等于b |
assertSame(a,b) | a,b是否引用同一个对象 |
assertNull(a) | a为空,a是一个对象 |
assertNotNull(a) | a不为空,a是一个对象 |
assertTrue(a) | a为真,a可以是一个条件判断语句 |
assertFalse(b) | b为假,b可以是一个条件判断语句 |
用Junit3.x执行用例的框架
TestCase实例被运行时,依照以下步骤运行:
1.创建测试用例的实例。
2.调用setUp()方法,执行一些初始化工作。
3.运行testXxx()测试方法。
4.调用tearDown()方法,执行销毁对象的工作。
1.创建测试用例的实例。
2.调用setUp()方法,执行一些初始化工作。
3.运行testXxx()测试方法。
4.调用tearDown()方法,执行销毁对象的工作。
这样我们只能一个一个用例的执行,介绍一个方法:
TestSuite对象将多个测试用例组装成到一个测试套件,则测试套件批量运行。
import org.junit.runners.Suite;
import junit.framework.TestSuite;
@RunWith(Suite. class)
@Suite.SuiteClasses({
PersonTest. class,
PersonTest2. class,
})
public class AllTest {
}
import junit.framework.TestSuite;
@RunWith(Suite. class)
@Suite.SuiteClasses({
PersonTest. class,
PersonTest2. class,
})
public class AllTest {
}
TestSuite处理测试用例时有5个规则,如下:
1 测试用例必须是公有类(Public)。
2 测试用例必须继承TestCase类。
3 测试用例的测试方法必须是公有的(Public)。
4 测试用例的测试方法必须被声明为void。
5 测试用例中测试方法的前置名词必须是test。
1 测试用例必须是公有类(Public)。
2 测试用例必须继承TestCase类。
3 测试用例的测试方法必须是公有的(Public)。
4 测试用例的测试方法必须被声明为void。
5 测试用例中测试方法的前置名词必须是test。
其中,1,3,4在junit4.x中也是需要的规则。
Junit写测试的注意要点:
1. 测试建立自己的工程,不要和开发代码混在一个工程里;
2. 测试用例和测试数据分离;
3. 测试类和测试方法应该有一致的命名方案;
如在工作类名前加上test从而形成测试类名
4. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试 ;
5. 确保测试用例的独立性,尽量减少测试用例之间的依赖;
6. 测试要尽可能地小,执行速度快。
2. 测试用例和测试数据分离;
3. 测试类和测试方法应该有一致的命名方案;
如在工作类名前加上test从而形成测试类名
4. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试 ;
5. 确保测试用例的独立性,尽量减少测试用例之间的依赖;
6. 测试要尽可能地小,执行速度快。