我正在一个具有几种文件格式的项目。某些格式由.xsds指定,其他格式由各自网站上的文档指定,而某些格式是自定义的内部格式,没有文档。姆哈哈哈哈哈
有什么问题?
我想测试我的文件阅读器,但是我不确定如何去做。应用程序的流程是这样的:
file.___ ===> read by FileReader.java ===> which creates a Model object
FileReader
接口在哪里
public interface FileReader {
public Model read(String filename);
}
在Model
拥有一批在读文件已填充属性。看起来像
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
我尝试了什么?
我唯一的想法是为每种文件格式创建文件“生成器”。这些生成器基本上是生成器,它们接受一些变量(例如,要在文件中生成的注释数量),并输出一个样本文件,然后我将其读入并将结果Model
与我最初用于生成文件的变量进行比较。
但是,这有一些问题:
- 它生成的文件看起来不像真实文件。生成器绝不了解上下文。
- 由于我是手动设置变量的生成器,因此很难识别生成器是否针对边缘情况生成了。这种方法仅比我创建十几个示例文件更好。
有没有更好的方法可以做到这一点?
编辑:将单元更改为集成,因为这实际上是我的意思。
EDIT2:这是我提到的边缘案例的示例。
每个文件代表一个由顶点和边组成的图形。这些顶点和边可以以不同的方式连接,因此:
v1 -- e1 --> v2 <-- e2 -- v3
与...不同
v1 -- e1 --> v2 -- e2 --> v3
因为边缘的方向很重要。我不确定这是否在问题范围内,但是当我手动设置顶点数,边数并仅随机生成连接时,很难考虑所有相关的边沿情况。
FileReader
实现中可能触发的边缘案例)?示例:给定以图像文件格式找到的边缘情况,对于每个表条目,如果支持属性的行/列组合,则应该至少有一个测试用例(数据文件)覆盖该组合。