JUnit中使用assertThat断言与MockMvc

本文介绍了在JUnit中如何使用assertThat断言配合Hamcrest匹配符进行测试,并详细讲解了MockMvc的用法,包括如何测试抛出异常、MockMvcRequestBuilders的使用以及结果处理器。还探讨了打包测试和一些常见的测试场景,如控制器测试、文件上传、JSON验证等。
摘要由CSDN通过智能技术生成

定义:
1.JUnit4.*引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活;
2.使用全新的断言语法:assertThat,结合Hamcest提供的匹配符,只用这一个方法,就可以实现所有的测试;
3.assertThat语法如下:
assertThat(T actual, Matcher matcher);
assertThat(String reason, T actual, Matcher matcher);
其中actual为需要测试的变量,matcher为使用Hamcrest的匹配符来表达变量actual期望值的声明;
4.注意事项:
a.必须导入JUnit4.4之后的版本才能使用assertThat方法;
b.不需要继承TestCase类,但是需要测试方法前必须加“@Test”。
注解:

@Before 初始化方法
@After 释放资源
@Test 测试方法,在这里可以测试期望异常和超时时间
@Ignore 忽略的测试方法
@BeforeClass 针对所有测试,只执行一次,且必须为static void
@AfterClass 针对所有测试,只执行一次,且必须为static void
@RunWith 指定测试类使用某个运行器
@Parameters 指定测试类的测试数据集合
@Rule 允许灵活添加或重新定义测试类中的每个测试方法的行为
@FixMethodOrder 指定测试方法的执行顺序

一个测试类单元测试的执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
代码:
sercice代码:

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

    public double div(double a, double b) {
   
        return a / b;
    }

    public String getName(String name) {
   
        return name;
    }
    public List<String> getList(String item) {
   
        List<String> l = new ArrayList<String>();
        l.add(item);
        return l;
    }

    public Map<String, String> getMap(String key, String value) {
   
        Map<String, String> m = new HashMap<String, String>();
        m.put(key, value);
        return m;
    }
  }

测试代码

public class Testas {
   

    @Test
    public void testAdd() {
   
        int s = new DemoService().add(1,2);
        //allOf:所有条件必须都成立,测试才通过
        assertThat(s,allOf(greaterThan(1),lessThan(5)));
        //anyOf:只要有一个条件成立,测试就通过
        assertThat(s,anyOf(greaterThan(1),lessThan(5)));
        //anything:无论什么条件,测试都通过
        assertThat(s, anything());
        //is:变量的值等于指定值时,测试通过
        assertThat(s, is(3));
        //is匹配符简写,is(equalTo(x))的简写,断言testedValue等于expectedValue
        int testedValue = 6;
        int expectedValue = 6;
        assertThat(testedValue, is(expectedValue));
        //not:和is相反,变量的值不等于指定值时,测试通过
        assertThat(s, not(1));

    }
    @Test
    public void testDiv(){
   
        //数值匹配符
        double d = new DemoService().div(10, 3);
        //closeTo:浮点型变量的值在3.0±0.5范围内,测试通过
        assertThat(d, closeTo(3.0, 0.5));
        //greaterThan:变量的值大于指定值时,测试通过
        assertThat(d, greaterThan(3.0));
        //lessThan:变量的值小于指定值时,测试通过
        assertThat(d, lessThan(3.5));
        //greaterThanOrEuqalTo:变量的值大于等于指定值时,测试通过
        assertThat(d, greaterThanOrEqualTo(3.3));
        //lessThanOrEqualTo:变量的值小于等于指定值时,测试通过
        assertThat(d, lessThanOrEqualTo(3.4));
    }
    @Test
    public void testString(){
   
        //字符串匹配符
        String n = new DemoService().getName("Magci"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值