java 单元测试框架-JUnit4

(减少时间、提升质量)
JUnit简介
什么是JUnit
是简单复用框架,是xUnit的子集(xUnit是一套基于测试驱动开发的测试框架)
首先下载jar包,在官网中下载junit.jar和hamcrest-core.jar
JUnit3中的所有方法都必须使用@Test注解
JUnit3需要在方法名前加test作为前缀
JUnit3必须继承junit.framework.TestCase类(JUnit4不需要)
为什么要使用JUnit
测试框架可以帮助我们有目的性的测试,能帮助我们最大限度上的避免代码出bug,并使程序达到预期的效果。
JUnit 使用 断言机制 将预期的结果 和 输出的结果进行比对
使用JUnit
在项目下add Libraries…加入JUnit
然后新建一个测试类,在当前包中new 一个 JUnit Test Case(会自动生成测试模板)
assertEquals(预期值,new 预期方法());
然后右键–Run As–JUnit Test

junit2实践
1.测试方法必须使用@Test进行修饰
2.测试方法必须使用public void 进行修饰,不能带任何的参数
3.新建一个源代码目录来存放我们的测试代码
4.测试类的包应该和被测试类保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
6.测试类使用Test作为类名的后缀(不是必须的)
7.测试方法使用test作为方法名的前缀(不是必须的)
测试失败的两种结果
1.Fail(结果跟预期不一致)一般由单元测试使用的断言方法失败索导致的,这表示测试点发现了问题
2.Error(抛出异常) 它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug
3.测试用例不是用来证明你是对的,而是用来证明你没有错。

JUnit运行流程

@BeforeClass
    public static void setUpBeforeClass() throws Exception{}
    @AfterClass
    public static void tearDownAfterClass() throws Exception{}
    @Before
    public void setUp() throws Exception{}
    @After 
    public void tearDown() throws Exception{}
    @Test(模板)
    public void test(){ fail("Not yet implemented!"); }

1.@BeforeClass 修饰的方法会在所有的方法被调用前执行,
而且该方法是静态的,所以当测试类被加载后接着就会运行它,
而且在内存中它只会存在一份实例,它比较适合加载配置文件
2.@AfterClass 所修饰的方法通常用来对资源的清理,如关闭数据库的连接
3.@Before 和 @After 会在每个测试方法的前后各执行一次。

JUnit常用注解
@Test 将一个普通的方法修饰成为一个测试方法
@BeforeClass 它会在所有的方法运行前被执行,static修饰
@AfterClass 它会在所有的方法运行结束后被执行,static修饰
@Before 会在每一个测试方法被运行前执行一次
@After 会在每一个测试方法运行后被执行一次
@Test(excpected=xxx.class)(预期抛出一个什么样的异常)
@Test(timeout = 毫秒) (在多少毫秒后结束该方法)
@Ignore:所修饰的测试方法会被测试运行器忽略,不会执行
@RunWith 可以更改测试运行器
测试套件的使用(套件测试类必须是空类)

@RunWith(Suite.class)
    @Suite.SuiteClasses({TaskTesk1.class,TaskClass2.class,TaskClass3.class})
    public class SuiteTest{
    }

1.测试套间类就是组织测试类一起运行的
写一个作为测试套间的入口类,这个类里不包含其他的方法
更改测试运行器Suite.class
将要测试的类作为数组传入到Suite,SuiteClasses({})

junit4的参数化设置

@RunWit(Parameterized.class)
    public class ParameterTest{
        int expected = 0;
        int input1 = 0;
        int input2 = 0;
        @Parameters
        public static Collection<Object[]> t(){
            return Array.asList(new Object[][]{
            {3,1,2},
            {4,2,2}
            });
        }
        //构造函数
        public ParameterTest(int expected,int input1,int input2){
            this.expected = expected;
            this.input1 = input1;
            this.input2 = input2;
        }
    }

1.更改默认的测试运行器为RunWith(Parameterized.class)
2.声明变量来存放预期值和结果值
3.声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰
4.为测试类声明一个带有参数的公共的构造函数,并在其中为之声明变量赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值