只需要通过打上@Test​注解,即可将一个方法标记为测试案例,我们可以直接运行此测试案例,但是我们编写的测试方法有以下要求:

  • 方法必须是public的
  • 不能是静态方法
  • 返回值必须是void
  • 必须是没有任何参数的方法

image
image

我们可以点击类前面的测试按钮,或是单个方法前的测试按钮,如果点击类前面的测试按钮,会执行所有的测试用例。

运行测试后,我们发现控制台得到了一个测试结果,显示为绿色表示测试通过。

通过断言工具类来判定测试类是否通过

public class TestMain {
    @Test
    public void test1() {
        System.out.println("test1: Hello World!");
    }

    @Test
    public void test2() {
        System.out.println("test2: Hello World!");
        Assert.assertEquals(1,2);	//参数1是期望值,参数2是实际值
    }
}

参数1和参数2的值不一致则会报错

image
image

不仅可以判断数值,也可以判断数组或对象

数组判断可以举一个算法小例子,设计一个冒泡排序算法,并验证该算法的正确性

public class TestMain {
    @Test
    public void test1(){
        int[] arr = {0, 4, 5, 2, 6, 9, 3, 1, 7, 8};
        bubbleSort(arr);
        Assert.assertArrayEquals(new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, arr);
    }
    @Test
    public void test2(){
        int[] arr = {15,0,11,14};
        bubbleSort(arr);
        Assert.assertArrayEquals(new int[]{0,11,14,15}, arr);
    }
    public void bubbleSort(int[] arr){
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if(arr[j] > arr[j + 1]){
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }
}

test1和test2就像是我们熟悉的测试点,通过则表示AC,如果报错则表示WA

也可以用于判断两个对象是否相同,比如判断从mysql数据库中取出一个用户数据是否和期望的一致

public class TestMain {
    @Test
    public void test() throws FileNotFoundException {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
        @Cleanup SqlSession session = sqlSessionFactory.openSession();
        TestMapper mapper = session.getMapper(TestMapper.class);
        User user = mapper.selectUserById(1);
        System.out.println(user);
        Assert.assertEquals(new User().setId(1).setName("小王").setAge(18),user);
    }
}

@Before​和@After​可以为测试样例添加前置和结束动作

public class TestMain {
    @Before
    public void before() {
        System.out.println("before");
    }
    @After
    public void after() {
        System.out.println("after");
    }
    @Test
    public void test() throws FileNotFoundException {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
        @Cleanup SqlSession session = sqlSessionFactory.openSession();
        TestMapper mapper = session.getMapper(TestMapper.class);
        User user = mapper.selectUserById(1);
        System.out.println(user);
        Assert.assertEquals(new User().setId(1).setName("小王").setAge(18),user);
    }
}

image
image