veProfiles的时候,外形=默认和没有设定个人资料的豆会被加载到。
源代码ActiveProfileTest:
@ContextConfiguration(类 = 配置。类)
公共 类 ActiveProfileTest 延伸 AbstractTestNGSpringContextTests {
@Autowired
私人 Foo foo;
@Autowired
私人 酒吧 ;
@Test
public void test(){
的assertEquals(FOO 。的getName(), “默认”);
的assertEquals(巴。的getName(), “无简档”);
}
}
例子二:使用ActiveProfiles
当使用了@ActiveProfiles的时候,轮廓匹配的和没有设定个人资料的豆会被加载到。
源代码ActiveProfileTest:
@ContextConfiguration(类 = 配置。类)
[ @ActiveProfiles] [doc-active-profiles](“ product ”)
public class ActiveProfileTest extends AbstractTestNGSpringContextTests {
@Autowired
私人 Foo foo;
@Autowired
私人 酒吧 ;
@Test
public void test(){
的assertEquals(FOO 。的getName(), “产品”);
的assertEquals(巴。的getName(), “无简档”);
}
}
总结
在没有@ActiveProfiles的时候,外形=默认和没有设定个人资料的豆会被加载到。
当使用了@ActiveProfiles的时候,轮廓匹配的和没有设定个人资料的豆会被加载到。
@ActiveProfiles同样也可以和@SpringBootTest配合使用,这里就不举例说明了。
Annotations - @JsonTest
@JsonTest是Spring Boot提供的方便测试JSON序列化反序列化的测试工具,在Spring Boot的文档中有一些介绍。
需要注意的是@JsonTest需要Jackson的ObjectMapper,事实上如果你的Spring Boot项目添加了spring-web的Maven依赖,JacksonAutoConfiguration就会自动为你配置一个:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
这里没有提供关于日期时间的例子,关于这个比较复杂,可以看我的另一篇文章:Spring Boot Jackson对于日期时间类型处理的例子。
例子1:简单例子
源代码见SimpleJsonTest:
@SpringBootTest(classes = SimpleJsonTest.class)
@JsonTest
public class SimpleJsonTest extends AbstractTestNGSpringContextTests {
@Autowired
private JacksonTester<Foo> json;
@Test
public void testSerialize() throws Exception {
Foo details = new Foo("Honda", 12);
// 使用通包下的json文件测试结果是否正确
assertThat(this.json.write(details)).isEqualToJson("expected.json");
// 或者使用基于JSON path的校验
assertThat(this.json.write(details)).hasJsonPathStringValue("@.name");
assertThat(this.json.write(details)).extractingJsonPathStringValue("@.name").isEqualTo("Honda");
assertThat(this.json.write(details)).hasJsonPathNumberValue("@.age");
assertThat(this.json.write(details)).extractingJsonPathNumberValue("@.age").isEqualTo(12);
}
@Test
public void testDeserialize() throws Exception {
String content = "{\"name\":\"Ford\",\"age\":13}";
Foo actual = this.json.parseObject(content);
assertThat(actual).isEqualTo(new Foo("Ford", 13));
assertThat(actual.getName()).isEqualTo("Ford");
assertThat(actual.getAge()).isEqualTo(13);
}
}
例子2: 测试@JsonComponent
@JsonTest可以用来测试@JsonComponent。
这个例子里使用了自定义的@JsonComponent FooJsonComponent:
@JsonComponent
public class FooJsonComponent {
public static class Serializer extends JsonSerializer<Foo> {
@Override
public void serialize(Foo value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
// ...
}
}
public static class Deserializer extends JsonDeseri