我对 java 编程很陌生,但我会尽量使用正确的术语并尽可能避免误解。
我找到了一些与我的问题非常相似的主题的答案,但或者我只是看不出它们如何真正适合我的问题,或者它们真的不适合。其中一些使用模拟对象,但我不确定在我的情况下这是正确的选择。
一般说明
我需要一个对象数组,这些对象的信息是从随机访问的二进制文件中加载的。二进制文件的第一个字节是文件的标题,它定义了数据如何存储在文件中,基本上表示某些字段的长度,这些字段有助于计算文件中所需数据的位置。
所以现在我想测试将调用的方法以将由UnitListElement对象指定的所需数据加载到Unit对象。为此,我只关注对二进制文件的单次读取。
更详细的视图
我有一个名为Unit的 java 类,它有一些属性,比如说a ,*b* 和c。此属性的值通过调用getDataFromBinFile的方法加载:
public class Unit{
public double[] a;
public double[] b;
public double[] c;
getDataFromBinFile(UnitListElement element){
<here loads the data from the binary file with random access>
}
}
从二进制文件加载数据的方法,打开二进制文件并访问二进制文件中所需的数据。要读取的所需数据在UnitListElement对象中指定:
public class UnitListElement{
public String pathOfFile;
public int beginToReadAt; // info related to where the desired data begins
public int finishReading; // info related to where the desired data ends
}
属性beginToReadAt和finishReading时间引用与二进制文件的头一起用于计算要从二进制文件读取的第一个和最后一个字节位置。
所以我需要做的是一个测试,我调用方法getDataFromBinFile(unitListEl)并测试返回的信息是否正确。
解决方案的选项
第一个选项
在一些有类似问题的帖子中建议使用模拟对象。我试图找到有关模拟对象的文档,但我还没有找到任何简单的初学者指南。因此,虽然不太了解模拟对象,但我的印象是不适合这种情况,因为我要测试的是二进制文件的读取,而不仅仅是与其他对象的交互。
第二个选项
另一种选择是使用辅助方法在测试中为测试创建二进制文件,使用@BeforeClass 来创建测试,并使用此临时文件运行测试,然后使用@AfterClass 方法将其删除。
问题
您认为考虑 TDD 方法的最佳实践是什么?模拟对象真的适合这种情况吗?如果他们这样做了,是否有任何包含初学者基本示例的文档?
或者另一方面,文件的创建更适合测试阅读方法?
谢谢
提前非常感谢。