测试从文件映射对象的存储库

时间:2017-08-15 11:32:43

标签: java spring testing

如何在内存存储库中测试从资源文件夹中的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;对象。测试它的最佳方法是什么?我应该创建一些构造函数来将一些对象集合作为参数吗?

1 个答案:

答案 0 :(得分:1)

这取决于您想要进行测试的程度。您需要对代码中涉及的风险进行成本效益分析。序列化和编写文件存在错误风险,但代码的最高风险区域可能是方法正在进行的操作。它只取决于代码复杂性

在您给出的只传递对象列表的示例中,它只会测试方法中的逻辑,但它不会测试序列化并从内存中写入JSON文件。

如果要在序列化和写入文件中包含测试,可以传入一个参数,该参数提供文件所在的目录。默认情况下,它将采用/ resources。在测试中,您可以创建一个@Before,其中在特定位置复制或创建目录,然后在测试期间将路径传递到存储库。虽然这在代码覆盖率较高的意义上更好,但如果序列化非常简单则可能没有用。