如何在内存存储库中测试从资源文件夹中的JSON文件读取对象?
存储库:
@Repository
public class MyRepository{
private TreeMap<String, MyObject> objects;
private ObjectMapper mapper;
@Autowired
public MyRepository(ObjectMapper objectMapper) throws IOException {
// mapping objects from /resources to TreeMap
}
// some custom methods working on my objects
}
现在我想测试这些方法,但我不想使用&#34; real&#34;对象。测试它的最佳方法是什么?我应该创建一些构造函数来将一些对象集合作为参数吗?
答案 0 :(得分:1)
这取决于您想要进行测试的程度。您需要对代码中涉及的风险进行成本效益分析。序列化和编写文件存在错误风险,但代码的最高风险区域可能是方法正在进行的操作。它只取决于代码复杂性
在您给出的只传递对象列表的示例中,它只会测试方法中的逻辑,但它不会测试序列化并从内存中写入JSON文件。
如果要在序列化和写入文件中包含测试,可以传入一个参数,该参数提供文件所在的目录。默认情况下,它将采用/ resources。在测试中,您可以创建一个@Before
,其中在特定位置复制或创建目录,然后在测试期间将路径传递到存储库。虽然这在代码覆盖率较高的意义上更好,但如果序列化非常简单则可能没有用。