之前写过一篇文章简单介绍了jsonunit 这个非常棒的json断言工具。
在最近的测试项目中,发现有个接口返回值的errorMsg中包含了时间信息,需要用到正则匹配的断言。
由于官网关于正则匹配的案例只有一个,尝试多写了几个备用
关
package com.github.jsonunit;
import org.junit.jupiter.api.Test;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
public class JsonUnitTest {
@Test
public void TestJsonUnitPattern(){
assertThatJson("{\"test\": \"ABCD\"}")
.isEqualTo("{\"test\": \"${json-unit.regex}^A[A-Z]+\"}");
}
@Test
public void TestJsonUnitPatternPrefixChn(){
assertThatJson("{\"test\": \"甲ABC\"}")
.isEqualTo("{\"test\": \"${json-unit.regex}^甲[A-Z]+\"}");
}
@Test
public void TestJsonUnitPatternSuffix(){
assertThatJson("{\"test\": \"甲乙丙丁\"}")
.isEqualTo("{\"test\": \"${json-unit.regex}^甲.*丁$\"}");
}
@Test
public void TestJsonUnitPatternWildcast(){
assertThatJson("{\"test\": \"甲乙丙丁\"}")
.isEqualTo("{\"test\": \"${json-unit.regex}^甲.*\"}");
}
@Test
public void TestJsonUnitPatternWildcastInMiddle(){
assertThatJson("{\"test\": \"甲乙21:42:36丙丁\"}")
.isEqualTo("{\"test\": \"${json-unit.regex}甲乙.*丙\"}");
}
}
顺便记录一下使用的版本
<dependency>
<groupId>net.javacrumbs.json-unit</groupId>
<artifactId>json-unit-assertj</artifactId>
<version>2.17.0</version>
<scope>test</scope>
</dependency>
这个包附带了assertJ,并且需要有一个类似gson,gackson等gson解析包。很遗憾fastjson目前还不支持。