这可能是我将会得到的一个菜鸟问题,但是这里有...对不起,试图保持尽可能短的长度。
背景
我正在整理我在新角色中继承的代码库。因此,当我处理部分/错误/新功能时,我正在引入测试。其中一项功能是发票打印功能,发票是从水晶报表rpt文件生成的。底层的Crystal函数已经有一个小包装器,我只想测试它并确保我们按需要生成文件。
问题 首先,我知道使用文件IO的任何内容都不应该是单元测试的一部分,但是我可以通过集成测试/系统测试来解决这个问题吗?我是否只运行带有预加载数据的包装器并检查它是否吐出文件?我可以以编程方式查询PDF并确保细节正确吗?
我还试图模拟一些IO,以便我可以对包装器进行单元测试,但是在这里我遇到了moq的问题,不喜欢Crystal ReportDocument类。此外,我必须真正改变类的结构以允许测试,如果我真的这样做(有点像我应该这样)但是公开私有只是因为我可以插入测试数据似乎有点不对。
我还没有发布代码,因为这更像是一个理论上的辩论...我想得到一些代码覆盖但不确定我是否过度思考可以有人请告诉我这些类型的的情况。
非常感谢。
答案 0 :(得分:0)
我不担心这个类的单元测试,因为它本质上是一个集成类。实现应该相当简单(只需将基础晶体报告对象的连接方法等),所以我甚至不愿意为这个单独的类进行专门的集成测试。但是,您应该通过接受/更高级别的集成测试来覆盖它。我不确定Crystal Reports是如何工作的,但理想情况下,您希望以二进制方式将pdf与已知良好版本进行比较(这仅在生成的文件始终相同时才有效)。