1.通过Maven构建Java工程

 

2.添加Junit4依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>unitTest1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope><!-- 如果编写代码找不到包,先注释掉 -->
        </dependency>
    </dependencies>

</project>

 

3.编写一个Java类用来测试

package com.fxw.util;

public class Calculate {
    public int add(int a, int b) {
        return a + b;
    }

    public int subtract(int a, int b) {
        return a - b;
    }

    public int multiply(int a, int b) {
        return a * b;
    }

    public int divide(int a, int b) {
        return a/b;
    }
}

 

4.编写测试类CalculateTest(注意:当添加注解@Test时,可能找不到org.unit包而报错,这时我们先把dependency中的<scope>test</scope>删掉,然后就可以导入,然后补上就行了

package com.fxw.util;

import org.junit.*;

import static org.junit.Assert.*;

/**
 * @author:为道日损 2020-10-12 20:21
 * webSite:https://www.sudo.ren
 */
public class CalculateTest1 {

    /**
     * @RunWith 根据需要更改测试运行器,默认继承org.junit.runner.Runner
     * @throws Exception
     */


    //@BeforeClass:初始化类时加载,只运行一次
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("BeforeClass...");
    }

    //@Before:在每一个@Test之前运行
    @Before
    public void setUp() throws Exception {
        System.out.println("Before...");
    }

    //@After:在每一个@Test之后运行
    @After
    public void tearDown() throws Exception {
        System.out.println("After...");
    }

    //@AfterClass:销毁类时加载,只运行一次
    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("AfterClass...");
    }


    @Test
    public void test1() {
        System.out.println("test1...");
    }

    @Test
    public void test2() {
        System.out.println("test2...");
    }

    //expected Test期望捕捉的异常
    @Test(expected = ArithmeticException.class)
    public void test3() {
        System.out.println("test3...");
        assertEquals(3,6/0);
    }

    //
    // timeout 设置超时时间为2s,如果超时,则自动停止,并报错
    @Test(timeout = 2000)
    @Ignore // 忽略测试方法
    public void test4() {
        System.out.println("test4...");
        while (true) {
            System.out.println("run....");
        }
    }
}

 

当同一类参数需要测试多个方法时

package com.fxw.util;

import com.fxw.util.Calculate;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;

/**
 * @author:为道日损 2020-10-12 20:44
 * webSite:https://www.sudo.ren
 */
@RunWith(Parameterized.class)
public class ParamTest {

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

    int expected = 0;
    int input1 = 0;
    int input2 = 0;

    @Parameterized.Parameters
    public static Collection<Object[]> t() {
        return Arrays.asList(new Object[][]{
                {3,1,2},
                {4,2,2},
                {5,1,4}
        });
    }

    public ParamTest(int expected,int input1,int input2) {
        this.expected = expected;
        this.input1 = input1;
        this.input2 = input2;
    }

    @Test
    public void testAdd() {
        Assert.assertEquals(expected,new Calculate().add(input1,input2));
    }
}

 

如果我们需要分类测试,可以编写一个套件

package com.fxw.util;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import com.fxw.util.CalculateTest;
import com.fxw.util.CalculateTest1;

/**
 * @author:为道日损 2020-10-12 20:38
 * webSite:https://www.sudo.ren
 */
@RunWith(Suite.class)
@Suite.SuiteClasses({CalculateTest.class, CalculateTest1.class})
public class SuiteTest {

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

 

最后修改于 2020-10-19 20:43:44
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇