背景
在我们使用Mockito写Unit Test代码的时候,经常需要造各种mock数据。但是有些情况我们需要mock的数据很大并且复杂。手动造数据的方式就不太适合了,可以考虑换一种思路
思路
在平时开发是,我们经常是从后端(backend)发送请求,拿到json数据之后展示到界面(UI)上。介于此操作上,我们完全可以在数据请求时,将backend返回的json数据保存在本地的一个File中,通过读取此File中的json数据,然后通过Gson将json数据转换为JsonObject。最后使用此JsonObject进行 Mock test
做法
在 /src/test/ 文件夹下创建 resources 文件夹,如下所示:
读取resources中的json流数据
@Test
public void accessJsonInResources() {
ClassLoader loader = ClassLoader.getSystemClassLoader();
try {
String json = Files.lines(Paths.get(loader.getResource("data.json").toURI()))
.parallel()
.collect(Collectors.joining());
Gson gson = new Gson();
CourseNodeWrapper courseNodeWrapper = gson.fromJson(json, CourseNodeWrapper.class);
Object lastKey = courseNodeWrapper.getLastKey();
System.out.println("json is " + json);
System.out.println("lastKey is " + lastKey);
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}